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

java并發(fā)數(shù)據(jù)包Exchanger線程間的數(shù)據(jù)交換器

 更新時(shí)間:2022年03月15日 11:02:01   作者:字母  
這篇文章主要為大家介紹了java并發(fā)數(shù)據(jù)包使用數(shù)據(jù)交換器Exchanger來進(jìn)行線程之間的數(shù)據(jù)交換。有需要的朋友可以借鑒參考下,希望能夠有所幫助

java.util.concurrent.Exchanger可以用來進(jìn)行數(shù)據(jù)交換,或者被稱為“數(shù)據(jù)交換器”。兩個(gè)線程可以使用Exchanger交換數(shù)據(jù),下圖用來說明Exchanger的作用

在下面的代碼中

  • 首先我們定義了一個(gè)Exchanger,用于數(shù)據(jù)交換
  • 然后定義了兩個(gè)線程對象bookExchanger1和bookExchanger2,兩個(gè)線程都持有Exchanger交換器對象用于數(shù)據(jù)交換
  • 兩個(gè)線程中的每個(gè)線程都有自己的數(shù)據(jù),比如下面代碼中的String[] 書籍?dāng)?shù)組。
public static void main(String[] args) {
  //數(shù)據(jù)交換器-數(shù)據(jù)為book
  Exchanger<String> exchanger = new Exchanger<>();
  //換書線程1
  BookExchanger bookExchanger1
          = new BookExchanger(exchanger, new String[]{"Java從入門到放棄","Java編程思想"});
  //換書線程2
  BookExchanger bookExchanger2
          = new BookExchanger(exchanger, new String[]{"C語言程序設(shè)計(jì)","實(shí)戰(zhàn)Python數(shù)據(jù)分析"});
  new Thread(bookExchanger1).start();
  new Thread(bookExchanger2).start();
}

BookExchanger 繼承自Runnable代表參與換書的換書讀者,他持有Exchanger數(shù)據(jù)交換器用于交換圖書。

public class BookExchanger implements Runnable{
    Exchanger<String> exchanger = null;  //數(shù)據(jù)交換器
    String[]  books    = null;   //圖書數(shù)組
    public BookExchanger(Exchanger<String> exchanger, String[] books) {
        this.exchanger = exchanger;
        this.books = books;
    }
    @Override
    public void run() {
        try {
            for(String bookName : books) {
                //交換數(shù)據(jù),bookName為我的書,exBook為我換回來的書
                String exBook = this.exchanger.exchange(bookName);
                System.out.println(
                        Thread.currentThread().getName() +
                                " 用《 " + bookName + "》 換 《 " + exBook + "》"
                );
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

執(zhí)行上文中的代碼,得到如下的打印輸出??梢钥吹街挥袃蓚€(gè)線程完成一次交換之后,才能再進(jìn)行下一次的交換。

Thread-1 用《 C語言程序設(shè)計(jì)》 換 《 Java從入門到放棄》
Thread-0 用《 Java從入門到放棄》 換 《 C語言程序設(shè)計(jì)》
Thread-1 用《 實(shí)戰(zhàn)Python數(shù)據(jù)分析》 換 《 Java編程思想》
Thread-0 用《 Java編程思想》 換 《 實(shí)戰(zhàn)Python數(shù)據(jù)分析》

以上就是java并發(fā)數(shù)據(jù)包Exchanger線程間的數(shù)據(jù)交換器的詳細(xì)內(nèi)容,更多關(guān)于java并發(fā)Exchanger數(shù)據(jù)交換的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 在JAVA?Web項(xiàng)目中動態(tài)加載DLL/SO文件的方法

    在JAVA?Web項(xiàng)目中動態(tài)加載DLL/SO文件的方法

    在JAVA?Web項(xiàng)目中,我們經(jīng)常需要調(diào)用一些第三方庫或者實(shí)現(xiàn)一些JAVA本身不支持的功能,這時(shí),我們可能會考慮使用JNI來調(diào)用DLL或SO文件,然而,因此,本文將介紹如何在JAVA?Web項(xiàng)目中動態(tài)加載DLL/SO文件,需要的朋友可以參考下
    2024-12-12
  • Java 基于tcp協(xié)議實(shí)現(xiàn)文件上傳

    Java 基于tcp協(xié)議實(shí)現(xiàn)文件上傳

    這篇文章主要介紹了Java 基于tcp協(xié)議實(shí)現(xiàn)文件上傳,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-11-11
  • springboot配置允許跨域訪問代碼實(shí)例

    springboot配置允許跨域訪問代碼實(shí)例

    這篇文章主要介紹了springboot配置允許跨域訪問代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Spring的@Scope注解作用解析

    Spring的@Scope注解作用解析

    這篇文章主要介紹了Spring的@Scope注解作用解析,@Scope注解用于設(shè)置實(shí)例的作用域,默認(rèn)值是單實(shí)例,即當(dāng)IOC容器啟動后就調(diào)用該方法創(chuàng)建對象放到IOC容器中,以后每次獲取就是直接從容器中獲取,需要的朋友可以參考下
    2023-11-11
  • Spring boot集成Go-FastDFS實(shí)現(xiàn)圖片上傳刪除等功能實(shí)現(xiàn)

    Spring boot集成Go-FastDFS實(shí)現(xiàn)圖片上傳刪除等功能實(shí)現(xiàn)

    這篇文章主要介紹了Spring boot集成Go-FastDFS實(shí)現(xiàn)圖片上傳刪除等功能實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Java實(shí)現(xiàn)調(diào)用jython執(zhí)行python文件的方法

    Java實(shí)現(xiàn)調(diào)用jython執(zhí)行python文件的方法

    這篇文章主要介紹了Java實(shí)現(xiàn)調(diào)用jython執(zhí)行python文件的方法,結(jié)合實(shí)例形式分析了Java調(diào)用jython執(zhí)行python文件的常見操作技巧及相關(guān)問題解決方法,需要的朋友可以參考下
    2018-03-03
  • Java基于TCP協(xié)議的Socket通信

    Java基于TCP協(xié)議的Socket通信

    本文詳細(xì)講解了Java基于TCP協(xié)議的Socket通信,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • Java判斷字符串是否是有效的括號(實(shí)例詳解)

    Java判斷字符串是否是有效的括號(實(shí)例詳解)

    給定一個(gè)只包括 '(',')','{','}','[',']' 的字符串 s ,判斷字符串是否有效,有效字符串需要滿足:左括號必須用相同類型的右括號閉合,這篇文章主要介紹了Java判斷字符串是否是有效的括號,需要的朋友可以參考下
    2023-10-10
  • springboot整合websocket后啟動報(bào)錯(cuò)(javax.websocket.server.ServerContainer not available)

    springboot整合websocket后啟動報(bào)錯(cuò)(javax.websocket.server.ServerCont

    這篇文章主要介紹了springboot整合websocket后啟動報(bào)錯(cuò)(javax.websocket.server.ServerContainer not available),通過分析錯(cuò)誤信息、排查代碼和配置,找出問題的根源,并給出相應(yīng)的解決方案,感興趣的可以了解一下
    2024-01-01
  • java之Objects.nonNull用法代碼解讀

    java之Objects.nonNull用法代碼解讀

    這篇文章主要介紹了java之Objects.nonNull用法代碼,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03

最新評論

綦江县| 五河县| 渭南市| 大名县| 梨树县| 闽清县| 太仓市| 南汇区| 南昌县| 无为县| 天峨县| 尉氏县| 吉林市| 哈密市| 荥经县| 东山县| 浑源县| 房产| 福泉市| 安陆市| 慈溪市| 前郭尔| 雅安市| 临夏市| 宜阳县| 吉木萨尔县| 和龙市| 耒阳市| 西藏| 宜阳县| 利川市| 广西| 文化| 临夏市| 台中县| 宜君县| 牙克石市| 万州区| 威宁| 将乐县| 新宁县|