<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) 評論(0)  編輯  收藏 所屬分類: Java SE

    Exchanger 用來讓兩個線程互相等待并交換計算結果。這個類的用法很簡單,因為它就定義了兩個重載的 exchange 方法,參數(shù)多的那個無非增加了對超時的支持。當一個線程調用 exchange 的時候(以計算結果作為參數(shù)),它就開始等待另一個線程調用 exchange,然后兩個線程分別收到對方調用 exchange 時傳入的參數(shù),從而完成了計算結果的交換。

    不用太多的解釋,運行下面這個例子就一清二楚:

    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();
        

    運行結果(可能為):

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

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

    主站蜘蛛池模板: 日本黄色免费观看| 黄页网站免费观看| 亚洲午夜国产精品无码 | 精品免费国产一区二区三区| 亚洲一区二区三区高清| 8x网站免费入口在线观看| 亚洲91av视频| 69式互添免费视频| 亚洲香蕉久久一区二区三区四区| 特级做A爰片毛片免费69| 亚洲夂夂婷婷色拍WW47| 十八禁在线观看视频播放免费| 亚洲人成色77777| 三年片在线观看免费观看大全一 | 91精品免费不卡在线观看| 老司机亚洲精品影院| xxxxx免费视频| 亚洲一区AV无码少妇电影| 四虎永久免费地址在线网站| 夜夜爽妓女8888视频免费观看| 亚洲精品无码久久久久去q| 亚洲成av人片天堂网无码】| 免费欧洲美女牲交视频| 99在线热播精品免费99热| 亚洲高清视频免费| 97无码免费人妻超级碰碰夜夜| 曰批免费视频播放在线看片二| 亚洲伊人色欲综合网| 四虎在线视频免费观看视频| 亚洲欧洲免费无码| 国产亚洲一区二区三区在线不卡| 18pao国产成视频永久免费| 国产gv天堂亚洲国产gv刚刚碰 | 亚洲日韩国产一区二区三区在线| 国产在线ts人妖免费视频| sss日本免费完整版在线观看| 国产一精品一aⅴ一免费| www一区二区www免费| 亚洲中文无码线在线观看| 国产永久免费高清在线| 亚洲国产精品xo在线观看|