Java Object notifyAll()方法可以用来唤醒所有等待线程,它是Object类中的一个公共方法。它的作用是当一个对象上存在多个等待线程时,可以通过调用notifyAll()方法来唤醒所有等待线程,使得它们可以继续执行。
public synchronized void notifyAll() { notifyCount = 0; notifyAll(); }
以上代码是使用notifyAll()方法的基本格式,它需要在synchronized块中使用,notifyCount变量表示当前有多少线程在等待,当notifyCount等于0时,表示没有线程在等待,就可以调用notifyAll()方法来唤醒所有等待线程。
Java还提供了一个wait()方法,它可以用来让线程等待一段时间,当等待时间到达后,它会被唤醒,继续执行。
public class Test { public static void main(String[] args) { Object obj = new Object(); Thread t1 = new Thread(new Runnable() { @Override public void run() { synchronized (obj) { System.out.println("Thread 1 is waiting..."); try { obj.wait(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Thread 1 is running..."); } } }); Thread t2 = new Thread(new Runnable() { @Override public void run() { synchronized (obj) { System.out.println("Thread 2 is waiting..."); try { obj.wait(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Thread 2 is running..."); } } }); t1.start(); t2.start(); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (obj) { obj.notifyAll(); } } }
以上代码演示了如何使用notifyAll()方法来唤醒多个等待线程。创建了一个Object对象,创建了两个线程t1和t2,它们都在等待Object对象的notifyAll()方法的调用。程序休眠了2秒,调用了Object对象的notifyAll()方法,唤醒了所有等待的线程,使它们可以继续执行。
Java Object notifyAll()方法可以用来唤醒所有等待线程,它需要在synchronized块中使用,可以使用wait()方法来让线程等待一段时间,当等待时间到达后,它会被唤醒,继续执行。
本文链接:http://task.lmcjl.com/news/6765.html