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

溫馨提示×

java線程等待與notify方法應用

小樊
82
2024-07-09 14:55:27
欄目: 編程語言

在Java中,可以使用wait()和notify()方法實現線程的等待和喚醒操作。這兩個方法必須在同步代碼塊中使用,通常與synchronized關鍵字一起使用。

下面是一個簡單的示例,演示如何使用wait()和notify()方法實現線程之間的通信:

public class WaitNotifyExample {
    public static void main(String[] args) {
        final Object lock = new Object();
        
        Thread t1 = new Thread(() -> {
            synchronized(lock) {
                System.out.println("Thread 1 is waiting...");
                try {
                    lock.wait(); // 線程1等待
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("Thread 1 is notified!");
            }
        });
        
        Thread t2 = new Thread(() -> {
            synchronized(lock) {
                System.out.println("Thread 2 is notifying...");
                lock.notify(); // 喚醒線程1
            }
        });
        
        t1.start();
        t2.start();
    }
}

在上面的示例中,線程1在同步代碼塊中調用wait()方法進行等待,線程2在同步代碼塊中調用notify()方法喚醒線程1。當線程2調用notify()方法時,線程1會被喚醒并繼續執行。

需要注意的是,wait()和notify()方法必須在同步代碼塊中使用,否則會拋出IllegalMonitorStateException異常。另外,wait()方法會釋放對象鎖,而notify()方法不會釋放對象鎖,所以在使用時要謹慎確保線程安全。

0
岚皋县| 安徽省| 乌鲁木齐县| 桂阳县| 波密县| 南澳县| 三台县| 梅州市| 巴林左旗| 昂仁县| 文昌市| 寿光市| 文山县| 沛县| 六枝特区| 通辽市| 四会市| 岐山县| 梨树县| 县级市| 扬中市| 兴文县| 昌江| 柘城县| 竹山县| 大冶市| 崇州市| 石屏县| 开阳县| 古蔺县| 全州县| 南澳县| 宾阳县| 高阳县| 积石山| 克山县| 太仆寺旗| 浑源县| 定结县| 望江县| 南投市|