Dieser Artikel stellt hauptsächlich die notifyAll-Weckoperation in Java-Threads vor. Er ist sehr gut und hat Referenzwert.
Hinweis:
NotifyAll und notify in Java sind beides Operationen zum Aufwecken von Threads. notify weckt nur einen bestimmten Thread im Wartepool, es ist jedoch nicht sicher, um welchen Thread es sich handelt angegebenes ObjektAlle darin enthaltenen Threads führen Aufweckvorgänge durch, sobald das angegebene Objekt erfolgreich aufgeweckt wurde. Es nimmt sofort am Ressourcenwettbewerb des Threads teil.
Zum Beispiel:
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() + ":唤醒线程执行成功!"); } } }
Das Ausführungsergebnis ist:
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Operationscodes zum Aufwecken von notifyAll im Java-Thread. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!