如何测试notifyall的效果

avatar
作者
筋斗云
阅读量:3

要测试notifyAll()方法的效果,可以编写一个简单的多线程程序,然后使用wait()和notifyAll()方法来实现线程之间的通信。下面是一个示例代码:

public class NotifyAllExample {          private static final Object lock = new Object();          public static void main(String[] args) {         Thread t1 = new Thread(new MyRunnable(), "Thread 1");         Thread t2 = new Thread(new MyRunnable(), "Thread 2");         Thread t3 = new Thread(new MyRunnable(), "Thread 3");                  t1.start();         t2.start();         t3.start();                  try {             Thread.sleep(1000); // 等待一段时间确保所有线程都处于等待状态         } catch (InterruptedException e) {             e.printStackTrace();         }                  synchronized(lock) {             lock.notifyAll(); // 唤醒所有等待在lock对象上的线程         }     }          static class MyRunnable implements Runnable {         @Override         public void run() {             synchronized(lock) {                 try {                     System.out.println(Thread.currentThread().getName() + " is waiting");                     lock.wait(); // 等待被唤醒                     System.out.println(Thread.currentThread().getName() + " is awake");                 } catch (InterruptedException e) {                     e.printStackTrace();                 }             }         }     } } 

在上面的示例中,创建了3个线程并启动它们,然后让主线程等待一段时间后使用notifyAll()方法来唤醒所有等待在lock对象上的线程。每个线程在运行时会首先输出自己的名字并进入等待状态,当主线程调用notifyAll()方法后,所有线程会被唤醒并输出“is awake”。

运行这段代码可以看到多个线程被同时唤醒的效果,从而测试notifyAll()方法的效果。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!