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

溫馨提示×

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
岗巴县| 垣曲县| 盐池县| 英吉沙县| 萝北县| 濉溪县| 元朗区| 柯坪县| 永城市| 鄂托克旗| 藁城市| 随州市| 澎湖县| 凤台县| 石渠县| 维西| 集贤县| 资溪县| 昭苏县| 布尔津县| 伊川县| 嘉禾县| 田东县| 龙门县| 望城县| 进贤县| 临澧县| 奉贤区| 巍山| 金昌市| 马边| 柞水县| 公安县| 文成县| 青浦区| 泊头市| 安宁市| 东港市| 泾阳县| 无锡市| 泸州市|