Maison >Java >javaDidacticiel >Explication détaillée du code d'opération pour réveiller notifyAll dans le thread Java
Cet article présente principalement l'opération de réveil notifyAll dans les threads Java. Il est très bon et a une valeur de référence. Les amis qui en ont besoin peuvent s'y référer
Remarque :
NotifyAll et notify en Java sont deux opérations pour réveiller les threads notify ne réveilleront qu'un certain thread dans le pool d'attente, mais il n'est pas sûr de quel thread il s'agit de notifyAll. objet spécifiéTous les threads à l'intérieur effectuent des opérations de réveil une fois que l'objet spécifié est réveillé avec succès. Il rejoindra immédiatement le concours de ressources du fil.
Par exemple :
package TestThread.ThreadSynchronized; public class TestWaitAll { public static void main(String[] args) { Test1 test1 = new Test1(); Thread t = new Thread(test1, "线程1"); Thread t1 = new Thread(test1, "线程2"); Thread t2 = new Thread(test1, "线程3"); Test2 test2 = new Test2(test1, "唤醒线程"); t.start(); t1.start(); t2.start(); try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } test2.start(); } } class Test1 implements Runnable { public void run() { synchronized (this) { try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + "当前没有被执行到!"); } } } class Test2 extends Thread { private Test1 test1; String name; public Test2(Test1 test1, String name) { super(name); this.name = name; this.test1 = test1; } public void run() { synchronized (test1) { test1.notifyAll();// 针对当前对象执行唤醒所有线程的操作 System.out.println(Thread.currentThread().getName() + ":唤醒线程执行成功!"); } } }
Le résultat de l'exécution est :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!