如何测试notifyall的效果

   2024-10-07 5410
核心提示:要测试notifyAll()方法的效果,可以编写一个简单的多线程程序,然后使用wait()和notifyAll()方法来实现线程之间的通信。下面是一

要测试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()方法的效果。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号