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