新的起點 新的開始

          快樂生活 !

          學習實踐 JDK5 concurrent 并行包之CyclicBarrier

          本部分介紹CyclicBarrier類,該類通ReentrantLock 跟Condition。Barrier 顧名思義,只有所有線程數(shù)達到規(guī)定的數(shù)量時,它才會被觸發(fā)執(zhí)行。
          如下段代碼 只有線程12都執(zhí)行時,才會執(zhí)行它定義的線程。

          1 package net.vincent.study.other;
           2 
           3 import java.util.concurrent.BrokenBarrierException;
           4 import java.util.concurrent.CyclicBarrier;
           5 
           6 public class part1 {
           7 
           8     /**
           9      * This static mehthod create CyclicBarrier, and this barrier will sleep 1000 if number of count arrive 
          10      * @param number of count 
          11      * @return a CyclicBarrier that will sleep if number of await thread invoke. 
          12      */
          13 
          14     public static CyclicBarrier getCyclicBarrier(int count){
          15         if(count <=0)return null;
          16          final CyclicBarrier cyclicBarrier = new CyclicBarrier(count,new Runnable(){
          17             public void run(){
          18                 try {
          19                     Thread.sleep(1000);
          20                 } catch (InterruptedException e) {
          21                     e.printStackTrace();
          22                 }
          23                 System.out.println("conditon is arrive and CycleBarrier is running");
          24             }
          25         });
          26         return cyclicBarrier;
          27     }
          28     /**
          29      * Create
          30      * @param nameOfThread
          31      * @param cyclicBarrier
          32      * @return
          33      */
          34     public static Thread getThread(String nameOfThread ,final CyclicBarrier  cyclicBarrier ){
          35         Thread thread= new Thread(nameOfThread){
          36         public void run(){
          37                 System.out.println(this.getName()+"is begin; and count is "+(++count));
          38             try {
          39                 cyclicBarrier.await();
          40             } catch (InterruptedException e) {
          41                 // TODO Auto-generated catch block
          42                 e.printStackTrace();
          43             } catch (BrokenBarrierException e) {
          44                 // TODO Auto-generated catch block
          45                 e.printStackTrace();
          46             }
          47             System.out.println(this.getName()+"finished");
          48             }
          49         };
          50         return thread;
          51         
          52     }
          53     
          54     static  int count = 0;
          55     public static void main(String[] args) {
          56         /** define a cyclicBarrier and number of barrier is 2.*/
          57         CyclicBarrier cyclicBarrier  = getCyclicBarrier(2);
          58         Thread threadOne = getThread("threadOne",cyclicBarrier);
          59         threadOne.start();
          60         Thread threadTwo = getThread("threadTwo",cyclicBarrier);
          61         threadTwo.start();
          62 
          63 
          64     }
          65 
          66 
          67 }
          68 

          posted on 2007-09-28 14:51 advincenting 閱讀(1461) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           

          公告

          Locations of visitors to this pageBlogJava
        1. 首頁
        2. 新隨筆
        3. 聯(lián)系
        4. 聚合
        5. 管理
        6. <2007年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          統(tǒng)計

          常用鏈接

          留言簿(13)

          隨筆分類(71)

          隨筆檔案(179)

          文章檔案(13)

          新聞分類

          IT人的英語學習網(wǎng)站

          JAVA站點

          優(yōu)秀個人博客鏈接

          官網(wǎng)學習站點

          生活工作站點

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 伊金霍洛旗| 梅河口市| 太仆寺旗| 光泽县| 济南市| 盐津县| 托克托县| 汪清县| 普兰店市| 呼伦贝尔市| 白玉县| 隆安县| 孙吴县| 白城市| 宜川县| 建德市| 南郑县| 通许县| 德江县| 宣城市| 宜君县| 定州市| 巩义市| 那曲县| 盐山县| 封开县| 天峨县| 秀山| 伊春市| 大关县| 黔南| 昌吉市| 瓦房店市| 双城市| 怀宁县| 连云港市| 北票市| 天津市| 若羌县| 江永县| 泰宁县|