日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java.util.concurrent.Exchanger应用范例与原理浅析

發(fā)布時間:2024/9/30 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java.util.concurrent.Exchanger应用范例与原理浅析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

http://www.cnblogs.com/davidwang456/p/4179488.html

Exchanger是自jdk1.5起開始提供的工具套件,一般用于兩個工作線程之間交換數(shù)據(jù)。在本文中我將采取由淺入深的方式來介紹分析這個工具類。首先我們來看看官方的api文檔中的敘述:

A synchronization point at which threads can pair and swap elements within pairs. Each thread presents some object on entry to the exchange method, matches with a partner thread, and receives its partner's object on return. An Exchanger may be viewed as a bidirectional form of a SynchronousQueue. Exchangers may be useful in applications such as genetic algorithms and pipeline designs.

??? 在以上的描述中,有幾個要點:

  • 此類提供對外的操作是同步的;
  • 用于成對出現(xiàn)的線程之間交換數(shù)據(jù);
  • 可以視作雙向的同步隊列;
  • 可應(yīng)用于基因算法、流水線設(shè)計等場景。

?? 接著看api文檔,這個類提供對外的接口非常簡潔,一個無參構(gòu)造函數(shù),兩個重載的范型exchange方法:
public V exchange(V x) throws InterruptedException
public V exchange(V x, long timeout, TimeUnit unit) throws InterruptedException, TimeoutException
?? 從官方的javadoc可以知道,當(dāng)一個線程到達(dá)exchange調(diào)用點時,如果它的伙伴線程此前已經(jīng)調(diào)用了此方法,那么它的伙伴會被調(diào)度喚醒并與之進(jìn)行對象交換,然后各自返回。如果它的伙伴還沒到達(dá)交換點,那么當(dāng)前線程將會被掛起,直至伙伴線程到達(dá)——完成交換正常返回;或者當(dāng)前線程被中斷——拋出中斷異常;又或者是等候超時——拋出超時異常。


注意的是,

線程1

obj1 = exchanger.exchange(obj1);

線程2

obj2= exchanger.exchange(obj2);


這樣對調(diào)的結(jié)果就是obj1 = obj2, obj2= obj1

在java中都是引用的交換


在下面的例子中,ReadThread交換之后的buffList就指向了null


import java.util.LinkedList; import java.util.List; import java.util.concurrent.Exchanger;public class ExchangerTest {public static void main(String[] args) {Exchanger<List<String>> exchanger = new Exchanger<List<String>>();new ReadThread(exchanger).start();// 啟動讀數(shù)據(jù)線程new WriteThread(exchanger).start();// 啟動寫數(shù)據(jù)線程}}class ReadThread extends Thread {private Exchanger<List<String>> exchanger;List<String> bufferList = new LinkedList<String>();public static final Integer BUFFER_SIZE = 10;public ReadThread(Exchanger<List<String>> exchanger) {this.exchanger = exchanger;}@Overridepublic void run() {System.out.println("ReadThread start");for (int i = 0; i < BUFFER_SIZE; i++) {bufferList.add(String.valueOf( (char)( 'A' + i))); // 模擬讀數(shù)據(jù)}try {Thread.sleep(3000);bufferList = exchanger.exchange(bufferList);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("ReadThread end");//System.out.println("buff size " + bufferList.size());} }class WriteThread extends Thread {private Exchanger<List<String>> exchanger;List<String> bufferList;public WriteThread(Exchanger<List<String>> exchanger) {this.exchanger = exchanger;}@Overridepublic void run() {try {System.out.println("WriteThread start");bufferList = exchanger.exchange(bufferList); // 從Exchanger獲得緩存數(shù)據(jù)} catch (InterruptedException e) {e.printStackTrace();}for (String str : bufferList) {System.out.println(str);}System.out.println("WriteTread end");} }



總結(jié)

以上是生活随笔為你收集整理的java.util.concurrent.Exchanger应用范例与原理浅析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品无码免费在线观看 | wwwxxxx日本| 婷婷精品进入 | 69视频污 | 成人在线观看亚洲 | 激情图片在线视频 | 亚洲精品乱码久久久久久蜜桃欧美 | 国产伦精品一区二区三区视频免费 | 拍国产真实乱人偷精品 | 国产免费播放 | 亚洲国产精品一区二区尤物区 | aaa黄色片 | 无码熟妇人妻av | 操她视频在线观看 | 精品国产18久久久久久二百 | 99re这里只有精品在线观看 | 蜜桃aaa| 一区二区小说 | 天天色综合图片 | 在线免费观看www | 欧美性激情 | 精品91久久久久久 | 亚洲高清中文字幕 | 丁香六月婷婷 | 国精品一区二区三区 | 茄子av| 欧美日韩免费观看一区=区三区 | 小视频在线观看 | 18视频在线观看男男 | 天堂av影院 | 深夜免费福利 | 久久久亚洲欧美 | 老妇女av | 久久9精品区-无套内射无码 | 美女18网站| 日日cao| 日韩中文字幕 | 精品视频在线一区二区 | 91干网 | 91在线高清 | 久久大胆人体 | 国产福利在线免费观看 | 亚洲天堂三区 | 日韩一区二区三区中文字幕 | 91理论片午午伦夜理片久久 | 日韩中文第一页 | 污污网址在线观看 | 亚洲人交配 | 超碰成人免费电影 | 亚洲AV无码片久久精品 | 日本成人免费在线视频 | 欧美狠狠操 | 国产乱子伦视频一区二区三区 | 五月激情站 | 美妇av | ass日本| 中日韩黄色大片 | 在线免费观看日韩av | 在线免费精品 | 欧美日韩在线不卡 | 国产特级毛片aaaaaa | 人人看人人艹 | 亚欧在线免费观看 | 国产成人精品视频在线观看 | 亚欧在线 | 国产精品一区二区av日韩在线 | 偷拍亚洲色图 | 成人娱乐网 | 成人3d动漫在线观看 | 看黄网站在线 | 日本bbwbbw | 国产精品性 | 国产日韩久久久 | 韩国精品一区二区 | 久久888| 成人乱人乱一区二区三区一级视频 | 日日摸夜夜添狠狠添欧美 | 视频一区二区在线 | 成人黄色在线免费观看 | 一级视频在线播放 | 91在线观看免费 | 国产自在线拍 | 蜜臀久久99精品久久久无需会员 | 精品一区二区三区四区五区 | 偷偷操不一样 | 欧美日日日 | 91久久在线观看 | 日本www色视频 | 亚洲免费视频观看 | 国产成人精品视频一区二区 | 拔擦8x成人一区二区三区 | 野外做受又硬又粗又大视频√ | 日本精品视频一区 | 丰满人妻一区二区三区大胸 | 日韩蜜桃视频 | 欧美不卡一二三 | 最近日本中文字幕 | 青青草精品视频 | 亚洲午夜av在线 |