<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    神奇好望角 The Magical Cape of Good Hope

    庸人不必自擾,智者何需千慮?
    posts - 26, comments - 50, trackbacks - 0, articles - 11
      BlogJava :: 首頁 ::  :: 聯(lián)系 :: 聚合  :: 管理

    非主流并發(fā)工具之 Exchanger

    Posted on 2011-12-27 10:50 蜀山兆孨龘 閱讀(1520) 評(píng)論(0)  編輯  收藏 所屬分類: Java SE

    Exchanger 用來讓兩個(gè)線程互相等待并交換計(jì)算結(jié)果。這個(gè)類的用法很簡(jiǎn)單,因?yàn)樗投x了兩個(gè)重載的 exchange 方法,參數(shù)多的那個(gè)無非增加了對(duì)超時(shí)的支持。當(dāng)一個(gè)線程調(diào)用 exchange 的時(shí)候(以計(jì)算結(jié)果作為參數(shù)),它就開始等待另一個(gè)線程調(diào)用 exchange,然后兩個(gè)線程分別收到對(duì)方調(diào)用 exchange 時(shí)傳入的參數(shù),從而完成了計(jì)算結(jié)果的交換。

    不用太多的解釋,運(yùn)行下面這個(gè)例子就一清二楚:

    final Exchanger<String> e = new Exchanger<>();
    
    new Thread() {
        @Override
        public void run() {
            long id = Thread.currentThread().getId();
            String s = "abc";
            System.out.println("線程 [" + id + "] 算出 " + s);
    
            try {
                TimeUnit.SECONDS.sleep(new Random().nextInt(5));
                System.out.println("線程 [" + id + "] 收到 " + e.exchange(s));
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
        }
    }.start();
    
    new Thread() {
        @Override
        public void run() {
            long id = Thread.currentThread().getId();
            String s = "xyz";
            System.out.println("線程 [" + id + "] 算出 " + s);
    
            try {
                TimeUnit.SECONDS.sleep(new Random().nextInt(5));
                System.out.println("線程 [" + id + "] 收到 " + e.exchange(s));
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
        }
    }.start();
        

    運(yùn)行結(jié)果(可能為):

    線程 [9] 算出 abc
    線程 [10] 算出 xyz
    線程 [10] 收到 abc
    線程 [9] 收到 xyz

    最后強(qiáng)調(diào)下,該類只適用于兩個(gè)線程,妄圖用它來處理多個(gè)生產(chǎn)者和消費(fèi)者之間的數(shù)據(jù)交換是注定要失敗的……

    主站蜘蛛池模板: 1000部拍拍拍18勿入免费视频软件 | 免费精品国产自产拍在线观看| 黄色成人免费网站| 亚洲一区二区在线视频| 无码午夜成人1000部免费视频| 亚洲精品无码精品mV在线观看| 最近免费字幕中文大全| 亚洲日韩小电影在线观看| 伊人久久大香线蕉免费视频| 亚洲精品你懂的在线观看| 久久国产精品萌白酱免费| 激情内射亚洲一区二区三区| 亚洲成AV人在线观看天堂无码| 亚洲欧洲自拍拍偷综合| 国产精品永久免费10000| 国产精品亚洲综合五月天| 女人18毛片a级毛片免费视频| 亚洲经典千人经典日产| 波多野结衣视频在线免费观看| 色老头综合免费视频| 亚洲成A∨人片在线观看不卡| 精品一区二区三区无码免费视频| 久久精品国产亚洲AV忘忧草18| 日韩激情无码免费毛片| 亚洲av无码片在线播放| 无码国产精品一区二区免费虚拟VR| 亚洲 暴爽 AV人人爽日日碰| 午夜国产大片免费观看| 99视频在线免费观看| 亚洲婷婷在线视频| 黄页免费在线观看| 亚洲国产精品无码久久青草| 成人妇女免费播放久久久| 久久精品国产亚洲77777| 日本免费观看网站| 中文字幕乱码免费看电影| 亚洲色图.com| 免费人成在线观看网站视频| 久久久久久久久久国产精品免费| 亚洲色偷偷色噜噜狠狠99网| 在线亚洲97se亚洲综合在线 |