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

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

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

    隨筆 - 18, 文章 - 0, 評論 - 8, 引用 - 0
    數據加載中……

    2017年7月13日

    CyclicBarrier 簡單舉例

    一句話解釋:預備~~~開始

     1 import java.util.concurrent.BrokenBarrierException;
     2 import java.util.concurrent.CyclicBarrier;
     3 
     4 import org.slf4j.Logger;
     5 import org.slf4j.LoggerFactory;
     6 
     7 public class CyclicBarrierLearn {
     8     
     9     private Logger log = LoggerFactory.getLogger(CyclicBarrierLearn.class);
    10     
    11     private class Work extends Thread {
    12         
    13         private String name;
    14         private CyclicBarrier cyclicBarrier;
    15         
    16         public Work(String name, CyclicBarrier cyclicBarrier) {
    17             this.name = name;
    18             this.cyclicBarrier = cyclicBarrier;
    19         }
    20         
    21         @Override
    22         public void run() {
    23             try {
    24                 log.debug("thread name: " + name + " waiting work");
    25                 cyclicBarrier.await();
    26                 log.debug("thread name: " + name + " working");
    27             } catch (InterruptedException e) {
    28                 e.printStackTrace();
    29             } catch (BrokenBarrierException e) {
    30                 e.printStackTrace();
    31             }
    32             
    33         }
    34     }
    35     
    36     public void cyclicBarrier() {
    37         CyclicBarrier cyclicBarrier = new CyclicBarrier(50, new Runnable() {
    38             
    39             @Override
    40             public void run() {
    41                 log.debug("let's begin work");
    42             }
    43         });
    44         
    45         for (int i = 0; i < cyclicBarrier.getParties(); i++) {
    46             Work work = new Work(String.valueOf(i), cyclicBarrier);
    47             work.start();
    48         }
    49         
    50     }
    51 
    52     public static void main(String[] args) {
    53         CyclicBarrierLearn cyclicBarrierLearn = new CyclicBarrierLearn();
    54         cyclicBarrierLearn.cyclicBarrier();
    55 
    56     }
    57 
    58 }
    59 

    posted @ 2017-07-13 11:39 丑男 閱讀(174) | 評論 (0)編輯 收藏

    CountDownLatch 簡單舉例

    一句話解釋:主線程阻塞,其他線程完成后,主線程被喚醒后繼續執行

     1 import java.util.Random;
     2 import java.util.concurrent.CountDownLatch;
     3 
     4 import org.slf4j.Logger;
     5 import org.slf4j.LoggerFactory;
     6 
     7 public class CountDownLatchLearn {
     8     
     9     private Logger log = LoggerFactory.getLogger(CountDownLatchLearn.class);
    10     private CountDownLatch countDownLatch;
    11     
    12     public CountDownLatchLearn() {
    13         countDownLatch = new CountDownLatch(50);
    14     }
    15     
    16     public void countDown() {
    17         Long count = countDownLatch.getCount();
    18         log.debug("countDownLatch count is:" + count.toString());
    19         
    20         for (int i = 0; i < count; i++) {
    21             Work work = new Work(String.valueOf(i), countDownLatch);
    22             work.start();
    23         }
    24         try {
    25             countDownLatch.await();
    26         } catch (InterruptedException e) {
    27             e.printStackTrace();
    28         }
    29         log.debug("work finish!!!");
    30     }
    31     
    32     private class Work extends Thread {
    33         
    34         private String name;
    35         private CountDownLatch countDownLatch;
    36         
    37         public Work(String name, CountDownLatch countDownLatch) {
    38             this.name = name;
    39             this.countDownLatch = countDownLatch;
    40         }
    41         
    42         @Override
    43         public void run() {
    44             Random r = new Random();
    45             int sleep = r.nextInt(2000);
    46             try {
    47                 log.debug("thread sleep: "+ sleep);
    48                 Thread.sleep(sleep);
    49             } catch (InterruptedException e) {
    50                 e.printStackTrace();
    51             }
    52             log.debug("thread: " + name + ": do work");
    53             countDownLatch.countDown();
    54         }
    55     }
    56 
    57     public static void main(String[] args) {
    58         System.out.println("main start!!!");
    59         
    60         CountDownLatchLearn countDownLatchLearn = new CountDownLatchLearn();
    61         countDownLatchLearn.countDown();
    62         
    63         System.out.println("main end!!!");
    64     }
    65 
    66 }

    posted @ 2017-07-13 11:18 丑男 閱讀(308) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 日韩精品无码免费视频| 亚洲一区二区三区在线观看蜜桃| 亚洲一区AV无码少妇电影| 1000部禁片黄的免费看| 亚洲国产第一页www| 免费人妻无码不卡中文字幕系| 亚洲综合无码一区二区| 久久一本岛在免费线观看2020| 亚洲国产精品久久久久婷婷老年| 四虎国产精品免费永久在线| 亚洲精品字幕在线观看| 无码国产精品一区二区免费模式 | 在线看片无码永久免费aⅴ| 亚洲人精品亚洲人成在线| 在线不卡免费视频| 污网站免费在线观看| 伊人久久大香线蕉亚洲| 午夜理伦剧场免费| 亚洲av一本岛在线播放| 啦啦啦www免费视频| 免费一级全黄少妇性色生活片 | 成人免费a级毛片无码网站入口 | 最近最新中文字幕完整版免费高清| 久久亚洲精品国产亚洲老地址 | 亚洲精品伊人久久久久| 国产又黄又爽又猛的免费视频播放| 中美日韩在线网免费毛片视频 | 性xxxx视频免费播放直播| 亚洲小视频在线观看| 免费看韩国黄a片在线观看| 色天使色婷婷在线影院亚洲| 亚洲人成图片小说网站| 无码人妻一区二区三区免费手机| 亚洲av无码专区首页| 亚洲成Av人片乱码色午夜| 最近的中文字幕大全免费版| a级男女仿爱免费视频| 亚洲一区二区三区播放在线| 中文字幕中韩乱码亚洲大片| 四虎在线免费视频| 精品国产免费人成网站|