Rumah >Java >javaTutorial >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.
public final void wait() throws InterruptedException
public final void notify()
public final void notifyAll()<strong> </strong>
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(); } }
Inside start() method Inside join() method Waiting for the peer thread to finish. Inside run() method Peer thread finished.
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!