91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
成都市| 灵川县| 富蕴县| 霞浦县| 清丰县| 鹤山市| 九台市| 焦作市| 东辽县| 鲜城| 隆安县| 龙游县| 遂昌县| 漠河县| 囊谦县| 禹城市| 台北县| 将乐县| 普格县| 丰原市| 横峰县| 琼海市| 金秀| 安新县| 邹平县| 平湖市| 无锡市| 京山县| 吉首市| 乐陵市| 和林格尔县| 庆安县| 迁安市| 阿克苏市| 永仁县| 石渠县| 嵊泗县| 潞西市| 云梦县| 昭苏县| 汝南县|