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

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

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

    Chan Chen Coding...

    Java CyclicBarrier介紹

    Refer to: http://my.oschina.net/redhouse/blog/60739

    CyclicBarrier 
    (周期障礙)類可以幫助同步,它允許一組線程等待整個線程組到達公共屏障點。CyclicBarrier 是使用整型變量構造的,其確定組中的線程數。當一個線程到達屏障時(通過調用 CyclicBarrier.await()),它會被阻塞,直到所有線程都到達屏障,然后在該點允許所有線程繼續執行。與CountDownLatch不同的是,CyclicBarrier 所有公共線程都到達后,可以繼續執行下一個目標點,而CountDownLatch第一次到達指定點后,也就是記數器減制零,就無法再次執行下一目標工作。下面主要演義CyclicBarrier 的用法:

    package com.test;

    import java.text.SimpleDateFormat;

    import java.util.Date;

    import java.util.concurrent.BrokenBarrierException;

    import java.util.concurrent.CyclicBarrier;

    import java.util.concurrent.ExecutorService;

    import java.util.concurrent.Executors;

    public class TestCyclicBarrier {

    private static int[] timeWalk = { 5, 8, 15, 15, 10 };  // 徒步需要的時間

    private static int[] timeSelf = { 1, 3, 4, 4, 5 };           // 自駕游

    private static int[] timeBus = { 2, 4, 6, 6, 7 };           // 旅游大巴

    static String now() {

                SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");

                return sdf.format(new Date()) + ": ";

    }

    static class Tour implements Runnable {

                private   int[]     times;

                private   CyclicBarrier    barrier;

                private   String   tourName;

    public Tour(CyclicBarrier barrier, String tourName, int[] times) {

                this.times = times;

                this.tourName = tourName;

                this.barrier = barrier;

    }

    public void run() {

            try {

                     Thread.sleep(times[0] * 1000);

                      System.out.println(now() + tourName + " 合肥");

                      barrier.await();

                      Thread.sleep(times[1] * 1000);

                      System.out.println(now() + tourName + " 南京");

                       barrier.await();

                      Thread.sleep(times[4] * 1000);

                       System.out.println(now() + tourName + " 上海");

                       barrier.await();

                       System.out.println(tourName + "飛機 合肥");

             } catch (InterruptedException e) {

                       e.printStackTrace();

              } catch (BrokenBarrierException e) {

                        e.printStackTrace();

              }

        }

    }

     

    public static void main(String[] args) {

                  CyclicBarrier barrier = new CyclicBarrier(3);

                   ExecutorService exec = Executors.newFixedThreadPool(3);

                   exec.submit(new Tour(barrier, "徒步", timeWalk));

                   exec.submit(new Tour(barrier, "自駕", timeSelf));

                   exec.submit(new Tour(barrier, "大巴", timeBus));

                  exec.shutdown();

      }

    }

    最后執行結果如下:

    16:24:35: 自駕 合肥

    16:24:36: 大巴 合肥

    16:24:39: 徒步 合肥


    16:24:42: 自駕 南京

    16:24:43: 大巴 南京

    16:24:47: 徒步 南京


    16:24:52: 自駕 上海

    16:24:54: 大巴 上海

    16:24:57: 徒步 上海


    徒步飛機 合肥

    自駕飛機 合肥

    大巴飛機 合肥



    -----------------------------------------------------
    Silence, the way to avoid many problems;
    Smile, the way to solve many problems;

    posted on 2013-05-22 09:57 Chan Chen 閱讀(363) 評論(0)  編輯  收藏 所屬分類: Scala / Java

    主站蜘蛛池模板: 国产精品亚洲а∨无码播放不卡| 爱情岛论坛免费视频| 国产国产成年年人免费看片| 精精国产www视频在线观看免费| 91亚洲一区二区在线观看不卡| 国产精品视频免费一区二区三区| 国产午夜无码精品免费看动漫| 亚洲砖码砖专无区2023| 久久影视国产亚洲| 毛片免费vip会员在线看| 好男人资源在线WWW免费| 91丁香亚洲综合社区| 成人午夜亚洲精品无码网站| 18禁成年无码免费网站无遮挡| 一区二区免费电影| 2020久久精品亚洲热综合一本| 国产亚洲AV夜间福利香蕉149| 丁香花在线观看免费观看| 两个人www免费高清视频| 亚洲国产精品嫩草影院| 亚洲天堂视频在线观看| 亚洲五月午夜免费在线视频| 国产精品视频永久免费播放| 13小箩利洗澡无码视频网站免费 | 亚洲精品国产首次亮相| 亚洲AV无码专区国产乱码电影| 国产精品深夜福利免费观看| 永久免费在线观看视频| 国产一级a毛一级a看免费视频| 在线91精品亚洲网站精品成人| 亚洲最新中文字幕| 亚洲成AV人片在线观看WWW| 亚洲不卡AV影片在线播放| 女人被免费视频网站| 亚洲免费在线视频播放| 国内少妇偷人精品视频免费| 又硬又粗又长又爽免费看| 欧美亚洲国产SUV| 亚洲欧美日韩久久精品| 亚洲AV无码专区在线亚| 亚洲精品美女视频|