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

溫馨提示×

java線程等待的正確處理方式

小樊
83
2024-07-09 14:53:27
欄目: 編程語言

在Java中,線程等待的正確處理方式通常使用Object類的wait()notify()方法來實現。以下是一個簡單的示例:

public class Main {
    public static void main(String[] args) {
        final Object lock = new Object();

        Thread thread1 = new Thread(() -> {
            synchronized (lock) {
                try {
                    System.out.println("Thread 1 is waiting...");
                    lock.wait();
                    System.out.println("Thread 1 is notified.");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });

        Thread thread2 = new Thread(() -> {
            synchronized (lock) {
                System.out.println("Thread 2 is notifying...");
                lock.notify();
            }
        });

        thread1.start();
        thread2.start();
    }
}

在上面的示例中,Thread 1首先進入同步塊,然后調用lock.wait()方法使線程進入等待狀態。Thread 2在另一個線程中調用lock.notify()方法來喚醒Thread 1,使其繼續執行。

需要注意的是,在調用wait()notify()方法之前,必須先獲取對象的鎖(即synchronized(lock))。此外,wait()notify()方法必須在同步塊中調用,否則會拋出IllegalMonitorStateException異常。

另外,Java中還提供了wait(long timeout)方法和notifyAll()方法來更靈活地控制線程等待和喚醒的邏輯。

0
农安县| 苗栗县| 娱乐| 福州市| 安康市| 和顺县| 阿拉善盟| 龙岩市| 五河县| 新绛县| 凉山| 基隆市| 那曲县| 界首市| 通州区| 昭平县| 巴彦县| 清丰县| 洛浦县| 建德市| 哈巴河县| 凤台县| 南澳县| 墨玉县| 舒兰市| 衢州市| 泸溪县| 麟游县| 岐山县| 新营市| 改则县| 承德县| 新晃| 绥德县| 太白县| 贡觉县| 大新县| 雷州市| 绥宁县| 松阳县| 阿拉善右旗|