新的起點 新的開始

          快樂生活 !

          學習實踐 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站點

          優秀個人博客鏈接

          官網學習站點

          生活工作站點

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 丰城市| 司法| 古浪县| 黔江区| 广灵县| 万山特区| 浮山县| 南充市| 遂宁市| 双柏县| 屯门区| 青浦区| 吉林省| 海兴县| 准格尔旗| 贵港市| 江山市| 磐安县| 明星| 天等县| 夏河县| 罗江县| 兴海县| 嘉祥县| 武平县| 伊吾县| 颍上县| 手游| 鹿邑县| 怀安县| 开平市| 塔河县| 疏勒县| 淮北市| 新野县| 新田县| 醴陵市| 常宁市| 南宁市| 旬邑县| 融水|