Rumah > Java > javaTutorial > Apakah kepentingan kaedah wait(), notify() dan notifyAll() dalam Java?

Apakah kepentingan kaedah wait(), notify() dan notifyAll() dalam Java?

WBOY
Lepaskan: 2023-09-04 09:57:06
ke hadapan
1368 orang telah melayarinya

Apakah kepentingan kaedah wait(), notify() dan notifyAll() dalam Java?

Thread boleh berkomunikasi antara satu sama lain melalui kaedah wait(), notify() dan notifyAll() di Java. Ini adalah kaedah akhir ditakrifkan dalam kelas Objek dan hanya boleh dipanggil dari konteks disegerakkan . Kaedah wait() menyebabkan thread semasa menunggu sehingga thread lain memanggil kaedah notify() atau notifyAll() objek. Kaedah notify() membangkitkan satu utas yang sedang menunggu untuk monitor objek ini. Kaedah notifyAll() membangkitkan semua rangkaian yang sedang menunggu monitor objek ini. Satu benang menunggu monitor objek dengan memanggil salah satu kaedah wait(). Kaedah ini mungkin membuang IllegalMonitorStateException jika urutan semasa bukan pemilik monitor objek.

wait() kaedah sintaks

public final void wait() throws InterruptedException
Salin selepas log masuk

notify() kaedah sintaks

public final void notify()
Salin selepas log masuk

NotifyAll() kaedah sintaks

public final void notifyAll()<strong>
</strong>
Salin selepas log masuk

example

public class WaitNotifyTest {
   private static final long SLEEP_INTERVAL<strong> </strong>= 3000;
   private boolean running = true;
   private Thread thread;
   public void start() {
      print("Inside start() method");
      thread = new Thread(new Runnable() {
         @Override
         public void run() {
            print("Inside run() method");
            try {
               Thread.sleep(SLEEP_INTERVAL);
            } catch(InterruptedException e) {
               Thread.currentThread().interrupt();
            }
            synchronized(WaitNotifyTest.this) {
               running = false;
               WaitNotifyTest.this.notify();
            }
         }
      });
      thread.start();
   }
   public void join() throws InterruptedException {
      print("Inside join() method");
      synchronized(this) {
         while(running) {
            print("Waiting for the peer thread to finish.");
            wait(); //waiting, not running
         }
         print("Peer thread finished.");
      }
   }
   private void print(String s) {
      System.out.println(s);
   }
   public static void main(String[] args) throws InterruptedException {
      WaitNotifyTest test = new WaitNotifyTest();
      test.start();
      test.join();
   }
}
Salin selepas log masuk

output

Inside start() method
Inside join() method
Waiting for the peer thread to finish.
Inside run() method
Peer thread finished.
Salin selepas log masuk

Atas ialah kandungan terperinci Apakah kepentingan kaedah wait(), notify() dan notifyAll() dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan