亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

如何測試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
七台河市| 彝良县| 和政县| 东平县| 商丘市| 土默特右旗| 中阳县| 绿春县| 怀来县| 伊川县| 色达县| 阿克陶县| 华安县| 沂水县| 山阳县| 黔南| 康马县| 龙胜| 隆子县| 通海县| 慈利县| 新郑市| 肇州县| 娱乐| 呈贡县| 望江县| 辛集市| 银川市| 漳平市| 南京市| 宝鸡市| 繁昌县| 靖西县| 临泽县| 利津县| 个旧市| 逊克县| 霍邱县| 华蓥市| 凉山| 措勤县|