中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

如何測試notifyall的效果

小樊
83
2024-07-04 09:28:24
欄目: 編程語言

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

0
上杭县| 西畴县| 即墨市| 玛多县| 江安县| 林州市| 锦屏县| 赤壁市| 江西省| 任丘市| 瑞丽市| 招远市| 密云县| 庆城县| 罗甸县| 建昌县| 离岛区| 壶关县| 普格县| 秦皇岛市| 南昌市| 团风县| 中超| 吴川市| 横山县| 衢州市| 巩义市| 敦煌市| 新竹县| 汉中市| 禹州市| 莲花县| 滦南县| 五大连池市| 海兴县| 灵山县| 溆浦县| 乌拉特后旗| 迭部县| 弥勒县| 顺义区|