最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java并發(fā)工具之Exchanger線程間交換數(shù)據(jù)詳解

 更新時間:2023年12月11日 09:30:25   作者:warybee  
這篇文章主要介紹了Java并發(fā)工具之Exchanger線程間交換數(shù)據(jù)詳解,Exchanger是一個用于線程間協(xié)作的工具類,Exchanger用于進行線程間的數(shù)據(jù)交 換,它提供一個同步點,在這個同步點,兩個線程可以交換彼此的數(shù)據(jù),需要的朋友可以參考下

Exchanger簡介

Exchanger是一個用于線程間協(xié)作的工具類。

Exchanger用于進行線程間的數(shù)據(jù)交 換。

它提供一個同步點,在這個同步點,兩個線程可以交換彼此的數(shù)據(jù)。

這兩個線程通過 exchange方法交換數(shù)據(jù),如果第一個線程先執(zhí)行exchange()方法,它會一直等待第二個線程也 執(zhí)行exchange()方法,當兩個線程都到達同步點時,這兩個線程就可以交換數(shù)據(jù),將本線程生產(chǎn) 出來的數(shù)據(jù)傳遞給對方

在這里插入圖片描述

Exchanger使用介紹

Exchanger<T>用于在兩個線程之間共享數(shù)據(jù)。該類僅提供一個重載方法exchange(T t),其中exchange(V x, long timeout, TimeUnit unit)方法可以指定阻塞超時時間,下面通過一個來理解兩個線程之間交換數(shù)據(jù):

public class ExchangerDemo {
    static Exchanger<String> exgr = new Exchanger<>();
    public static void main(String[] args) {
         Thread taskA=new Thread(()->{
             try {
                 String message = exgr.exchange("from A");
                 System.out.println("A Task===>"+ message);
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
         });
        Thread taskB=new Thread(()->{
            try {
                String message = exgr.exchange("from B");
                System.out.println("B Task===>"+ message);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });
        taskA.start();
        taskB.start();

    }
}

輸出結果:

線程A,把數(shù)據(jù)傳給了線程B,線程B,把數(shù)據(jù)傳給了線程A

B Task===>from A
A Task===>from B

子線程與主線程間交換數(shù)據(jù)

public class ExchangerDemo2 {
    static Exchanger<String> exchanger = new Exchanger<>();
    public static void main(String[] args) throws InterruptedException {
        Runnable childTask = () -> {
            try {
                String message = exchanger.exchange("來自子線程的數(shù)據(jù)");
                System.out.println("子線程: "+message);
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
                throw new RuntimeException(e);
            }
        };
        //CompletableFuture java1.8中新增的異步編程類
        CompletableFuture<Void> result = CompletableFuture.runAsync(childTask);
        String msg = exchanger.exchange(" 來自主線程的數(shù)據(jù)");
        System.out.println("主線程: " +msg);
        result.join();
    }
}

輸出結果:

子線程:  來自主線程的數(shù)據(jù)
主線程: 來自子線程的數(shù)據(jù)

到此這篇關于Java并發(fā)工具之Exchanger線程間交換數(shù)據(jù)詳解的文章就介紹到這了,更多相關Exchanger線程間交換數(shù)據(jù)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • spring-cloud-gateway啟動踩坑及解決

    spring-cloud-gateway啟動踩坑及解決

    這篇文章主要介紹了spring-cloud-gateway啟動踩坑及解決方案,具有很好的參考價值,希望對大家有所幫助。
    2021-08-08
  • 深入理解Java中的Properties類

    深入理解Java中的Properties類

    Properties類是Java中用于處理配置文件的工具類,它繼承自 Hashtable類,實現(xiàn)了Map接口,本文主要介紹了Java中的Properties類,感興趣的可以了解一下
    2024-01-01
  • Java?ConcurrentHashMap實現(xiàn)線程安全的代碼示例

    Java?ConcurrentHashMap實現(xiàn)線程安全的代碼示例

    眾所周知ConcurrentHashMap是HashMap的多線程版本,HashMap?在并發(fā)操作時會有各種問題,而這些問題,只要使用ConcurrentHashMap就可以完美解決了,本文將給詳細介紹ConcurrentHashMap是如何保證線程安全的
    2023-05-05
  • 官方詳解HDFS?Balancer工具主要調優(yōu)參數(shù)

    官方詳解HDFS?Balancer工具主要調優(yōu)參數(shù)

    這篇文章主要為大家介紹了HDFS?Balancer工具主要調優(yōu)參數(shù)的?官方詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Java簡化復雜系統(tǒng)調用的門面設計模式

    Java簡化復雜系統(tǒng)調用的門面設計模式

    Java門面模式是一種結構性設計模式,它為復雜系統(tǒng)提供了一個簡單的接口,使得系統(tǒng)的客戶端能夠更加方便地使用系統(tǒng)功能。門面模式通過封裝復雜的子系統(tǒng),隱藏系統(tǒng)的實現(xiàn)細節(jié),提高了系統(tǒng)的易用性和靈活性
    2023-04-04
  • Java創(chuàng)建對象(顯式創(chuàng)建和隱含創(chuàng)建)

    Java創(chuàng)建對象(顯式創(chuàng)建和隱含創(chuàng)建)

    本文詳細介紹對象的創(chuàng)建,在 Java 語言中創(chuàng)建對象分顯式創(chuàng)建與隱含創(chuàng)建兩種情況,顯式創(chuàng)建和隱含創(chuàng)建,,需要的朋友可以參考下面文章的具體內容
    2021-09-09
  • Java編寫的24點紙牌游戲

    Java編寫的24點紙牌游戲

    這篇文章主要介紹了Java編寫的24點紙牌游戲的相關資料,需要的朋友可以參考下
    2015-03-03
  • Java啟動參數(shù)從基礎配置到高級調優(yōu)(最新整理)

    Java啟動參數(shù)從基礎配置到高級調優(yōu)(最新整理)

    文章系統(tǒng)講解Java啟動參數(shù)分類、內存管理配置、GC調優(yōu)策略及生產(chǎn)環(huán)境實踐,重點涵蓋標準/非標準參數(shù)、堆/元空間/直接內存設置、G1/Parallel等回收器選擇,并提供壓縮指針、容器化部署等優(yōu)化建議,感興趣的朋友跟隨小編一起看看吧
    2025-08-08
  • SpringBoot?攔截器返回false顯示跨域問題

    SpringBoot?攔截器返回false顯示跨域問題

    這篇文章主要介紹了SpringBoot?攔截器返回false顯示跨域問題,文章圍繞主題展開詳細的內容介紹,需要的小伙伴可以參考一下
    2022-04-04
  • JAVA字符串占位符使用方法實例

    JAVA字符串占位符使用方法實例

    今天同事又問起類似符串占位符使用的功能,所以下面這篇文章主要給大家介紹了關于JAVA字符串占位符使用的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-11-11

最新評論

玉树县| 吴堡县| 沧州市| 柳林县| 安溪县| 昌吉市| 包头市| 东乌珠穆沁旗| 浦江县| 河东区| 普格县| 大港区| 新化县| 洱源县| 阿坝| 嘉峪关市| 沂源县| 眉山市| 漾濞| 随州市| 色达县| 密山市| 蒲江县| 宜城市| 安塞县| 达日县| 兰坪| 云阳县| 辽源市| 南平市| 宁武县| 霍州市| 乐亭县| 和硕县| 定日县| 汕尾市| 米易县| 汉沽区| 威远县| 思南县| 沅陵县|