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

溫馨提示×

java wait方法在多線程中怎么用

小樊
81
2024-11-26 19:40:29
欄目: 編程語言

wait() 方法是 Java 多線程編程中的一個重要方法,主要用于讓當前線程等待,直到其他線程調用同一個對象的 notify()notifyAll() 方法。wait() 方法必須在同步代碼塊或同步方法中使用,否則會拋出 IllegalMonitorStateException 異常。

以下是一個簡單的示例,展示了如何在多線程中使用 wait()notify() 方法:

public class WaitNotifyExample {
    private static final Object lock = new Object();
    private static boolean messageReady = false;

    public static void main(String[] args) {
        Thread producer = new Thread(new Producer());
        Thread consumer = new Thread(new Consumer());

        producer.start();
        consumer.start();
    }

    static class Producer implements Runnable {
        @Override
        public void run() {
            synchronized (lock) {
                System.out.println("生產者生產了一條消息");
                messageReady = true;
                lock.notify(); // 通知消費者消息已準備好
            }
        }
    }

    static class Consumer implements Runnable {
        @Override
        public void run() {
            synchronized (lock) {
                try {
                    while (!messageReady) {
                        System.out.println("消費者等待消息...");
                        lock.wait(); // 等待生產者通知消息已準備好
                    }
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("消費者消費了消息");
            }
        }
    }
}

在這個示例中,我們有兩個線程:一個生產者線程和一個消費者線程。生產者線程生產了一條消息并將其設置為 true,然后調用 lock.notify() 通知消費者線程消息已準備好。消費者線程在一個循環中等待消息,如果消息未準備好,則調用 lock.wait() 進入等待狀態。當生產者線程通知消息已準備好時,消費者線程將退出循環并消費消息。

請注意,wait()notify() 方法必須在同步代碼塊或同步方法中使用,以確保線程安全。在這個示例中,我們使用了一個名為 lock 的對象作為鎖。

0
临潭县| 广元市| 江津市| 宜黄县| 巴彦淖尔市| 甘南县| 阿拉尔市| 海南省| 湘潭市| 太湖县| 迭部县| 和龙市| 肇源县| 淄博市| 靖远县| 巢湖市| 石城县| 开阳县| 溧水县| 钟祥市| 万源市| 永昌县| 柳林县| 家居| 邢台市| 高淳县| 阿巴嘎旗| 红桥区| 博湖县| 剑河县| 濮阳县| 大洼县| 怀仁县| 贞丰县| 玉环县| 台南县| 滨州市| 合水县| 五寨县| 平原县| 富川|