Heim > Java > javaLernprogramm > Detaillierte Erläuterung des Operationscodes zum Aufwecken von notifyAll im Java-Thread

Detaillierte Erläuterung des Operationscodes zum Aufwecken von notifyAll im Java-Thread

黄舟
Freigeben: 2017-03-25 10:40:58
Original
1399 Leute haben es durchsucht

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() + ":唤醒线程执行成功!");
  }
 }
}
Nach dem Login kopieren

Das Ausführungsergebnis ist:

Detaillierte Erläuterung des Operationscodes zum Aufwecken von notifyAll im Java-Thread

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage