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

溫馨提示×

java exchanger如何與線程池配合

小樊
85
2024-07-09 10:59:24
欄目: 編程語言

Java中的Exchanger類可以與線程池配合使用,以實現線程之間的數據交換。Exchanger類允許兩個線程在指定的同步點交換數據。這對于需要線程之間協調和同步的場景非常有用,比如生產者-消費者模型。

以下是一個示例代碼,演示了如何在線程池中使用Exchanger類進行數據交換:

import java.util.concurrent.Exchanger;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ExchangerExample {
    public static void main(String[] args) {
        Exchanger<String> exchanger = new Exchanger<>();
        ExecutorService executor = Executors.newFixedThreadPool(2);

        executor.execute(() -> {
            try {
                String data1 = "Data from Thread 1";
                System.out.println("Thread 1 has data: " + data1);
                String exchangedData = exchanger.exchange(data1);
                System.out.println("Thread 1 received: " + exchangedData);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });

        executor.execute(() -> {
            try {
                String data2 = "Data from Thread 2";
                System.out.println("Thread 2 has data: " + data2);
                String exchangedData = exchanger.exchange(data2);
                System.out.println("Thread 2 received: " + exchangedData);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });

        executor.shutdown();
    }
}

在這個示例中,我們創建了一個包含兩個線程的線程池,并使用Exchanger類在兩個線程之間交換數據。線程1創建了一個字符串數據并交換給線程2,而線程2創建了另一個字符串數據并交換給線程1,最終兩個線程分別打印出接收到的對方交換的數據。

通過這種方式,我們可以在線程池中實現線程之間的數據交換,實現更加靈活和高效的線程協作。

0
苍梧县| 广平县| 富裕县| 建瓯市| 新竹市| 丹东市| 山西省| 阿克苏市| 玉林市| 霍山县| 汤原县| 呼玛县| 连城县| 长春市| 昌江| 明星| 大足县| 河津市| 海盐县| 雷波县| 莱芜市| 深泽县| 昭平县| 沙雅县| 安吉县| 三门峡市| 格尔木市| 普宁市| 右玉县| 彭泽县| 克什克腾旗| 天津市| 本溪市| 长子县| 五家渠市| 老河口市| 杂多县| 綦江县| 漳浦县| 阿瓦提县| 怀安县|