新的起點 新的開始

          快樂生活 !

          學習實踐 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 閱讀(1466) 評論(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站點

          優秀個人博客鏈接

          官網學習站點

          生活工作站點

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 大余县| 探索| 赞皇县| 沙湾县| 宜兰市| 黄浦区| 乃东县| 晋州市| 菏泽市| 嘉黎县| 镇康县| 凤凰县| 香河县| 莱芜市| 新密市| 宁都县| 南平市| 沂水县| 法库县| 顺平县| 天气| 日土县| 武汉市| 卫辉市| 仪征市| 关岭| 铜川市| 鞍山市| 武汉市| 历史| 通河县| 新营市| 瓦房店市| 兴宁市| 娱乐| 图片| 林甸县| 休宁县| 荆门市| 德州市| 山东省|