温馨提示×

Java多线程中notifyAll()方法使用

小云
84
2023-08-05 18:23:59
栏目: 编程语言

在Java多线程中,notifyAll()方法用于唤醒所有正在等待该对象的线程。具体使用方法如下:

  1. 在需要等待的线程中,使用wait()方法使线程进入等待状态。
synchronized(obj) {
while (condition) {
obj.wait();
}
}
  1. 当某个线程满足条件时,调用notifyAll()方法来唤醒所有等待该对象的线程。
synchronized(obj) {
condition = false;
obj.notifyAll();
}

在调用notifyAll()方法后,被唤醒的线程会重新竞争锁,然后继续执行。注意,notifyAll()方法只会唤醒正在等待该对象的线程,不会释放锁。因此,被唤醒的线程仍然需要等待锁被释放才能继续执行。

需要注意的是,notifyAll()方法是Object类中的方法,因此任何对象都可以调用该方法。但是,只有在同一个对象的监视器上等待的线程才能被唤醒。

0