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

溫馨提示×

Java多線程execute如何實現線程間通信

小樊
82
2024-09-29 12:35:01
欄目: 編程語言

在Java中,我們可以使用wait()和notifyAll()方法來實現線程間的通信。這兩個方法用于協調多個線程對共享資源的訪問。以下是一個簡單的示例,展示了如何使用execute方法實現線程間通信:

public class ThreadCommunication {

    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) {
                try {
                    System.out.println("生產者準備生產消息");
                    lock.wait(); // 等待消費者消費消息
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                System.out.println("生產者生產消息");
                messageReady = true;
                lock.notifyAll(); // 通知消費者消息已準備好
            }
        }
    }

    static class Consumer implements Runnable {
        @Override
        public void run() {
            synchronized (lock) {
                try {
                    while (!messageReady) {
                        lock.wait(); // 如果沒有消息,消費者等待
                    }
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                System.out.println("消費者消費消息");
                messageReady = false;
                lock.notifyAll(); // 通知生產者繼續生產消息
            }
        }
    }
}

在這個示例中,我們創建了一個生產者線程和一個消費者線程。生產者線程在生產消息之前需要等待消費者線程消費完之前的消息,而消費者線程在沒有消息可讀時需要等待生產者線程生產消息。我們使用synchronized關鍵字和wait()、notifyAll()方法來實現線程間的通信。

0
邵阳县| 公安县| 南通市| 波密县| 沈丘县| 雷山县| 东乌| 铁岭市| 四会市| 黑水县| 宕昌县| 隆子县| 通海县| 梧州市| 舞钢市| 武强县| 库车县| 大邑县| 望江县| 瑞金市| 哈密市| 垦利县| 哈尔滨市| 融水| 上林县| 天津市| 绥宁县| 察雅县| 浦城县| 确山县| 灵山县| 嵩明县| 永宁县| 宁河县| 长海县| 丽水市| 黄梅县| 胶南市| 宜春市| 瑞金市| 阿鲁科尔沁旗|