在Java多線程中,notifyAll()方法用于喚醒所有正在等待該對象的線程。具體使用方法如下:
synchronized(obj) {
while (condition) {
obj.wait();
}
}
synchronized(obj) {
condition = false;
obj.notifyAll();
}
在調用notifyAll()方法后,被喚醒的線程會重新競爭鎖,然后繼續執行。注意,notifyAll()方法只會喚醒正在等待該對象的線程,不會釋放鎖。因此,被喚醒的線程仍然需要等待鎖被釋放才能繼續執行。
需要注意的是,notifyAll()方法是Object類中的方法,因此任何對象都可以調用該方法。但是,只有在同一個對象的監視器上等待的線程才能被喚醒。