java - wait(),notify(),notifyAll() T2 start! T2 end! T1 start! 为什么会阻塞
PHP中文网
PHP中文网 2017-04-18 10:53:24
0
2
919
public class Thread04 {
   final Object object = new Object();
Runnable rb4 = new Runnable() {
    public void run(){
        synchronized (object){

                System.out.println("T1 start!");
                try {
                    object.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                object.notify();
                System.out.println("T1 end!");
            }
        }
};
Runnable rb5 = new Runnable() {
    public void run(){
        synchronized (object){
            System.out.println("T2 start!");
            object.notify();
            System.out.println("T2 end!");
            }
        }
};
public static void main(String[] args) {
        Thread04 th = new Thread04();
        new Thread(th.rb4).start();
        new Thread(th.rb5).start();
     }
 }
PHP中文网
PHP中文网

认证高级PHP讲师

répondre à tous(2)
洪涛

object.notify(); de rb5 est appelé lorsque rb4 n'est pas entré dans l'état d'attente car il attend toujours le verrou. Le démarrage du thread ne signifie pas qu'il exécutera () tout seul immédiatement, ce qui signifie que le run () du thread qui démarre () après lui sera probablement exécuté en premier.

迷茫

rb4 obtient le verrou d'objet de object pendant le fonctionnement, génère T1 start!, puis appelle wait() Cette méthode provoquera le blocage de rb4, libérera le verrou et bloquera en même temps. A ce moment rb5 obtient le verrou et sort T2 start!. Appelez ensuite object.notify(); Bien que rb4 soit destiné à s'exécuter, le verrou de rb5 n'a pas été libéré, donc rb4 est toujours bloqué. rb5Continuer l'exécution et la sortie T2 end!. rb5L'opération est terminée, le verrou est libéré, rb4L'opération sortT1 end!.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!