新的起點 新的開始

          快樂生活 !

          學習實踐 JDK5 concurrent 并行包之CyclicBarrier

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

          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 閱讀(1463) 評論(0)  編輯  收藏


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


          網站導航:
           

          公告

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

          統計

          常用鏈接

          留言簿(13)

          隨筆分類(71)

          隨筆檔案(179)

          文章檔案(13)

          新聞分類

          IT人的英語學習網站

          JAVA站點

          優秀個人博客鏈接

          官網學習站點

          生活工作站點

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 枣庄市| 花莲市| 高台县| 疏附县| 康乐县| 平阴县| 宕昌县| 黄梅县| 定日县| 峨边| 西峡县| 梁山县| 东安县| 洛浦县| 吉水县| 繁昌县| 洪江市| 巫山县| 岳阳市| 高陵县| 隆德县| 东乡族自治县| 香河县| 巴林右旗| 翁牛特旗| 临颍县| 昌平区| 噶尔县| 水城县| 虹口区| 乌兰察布市| 永定县| 襄垣县| 陆川县| 长兴县| 翁源县| 清原| 平舆县| 凌海市| 会东县| 德令哈市|