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

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

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

    統(tǒng)計

    留言簿(1)

    DB

    Others

    QA

    Tech Website

    閱讀排行榜

    評論排行榜

    CyclicBarrier in Java

    1. Description
       A synchronization aid that allows a set of threads to all wait for each other to reach a common barrier point. CyclicBarriers are useful in programs involving a fixed sized party of threads that must occasionally wait for each other. The barrier is called cyclic because it can be re-used after the waiting threads are released.


    The threads wait for each other by calling the await() method on the CyclicBarrier. Once N threads are waiting at the CyclicBarrier, all threads are released and can continue running

    2. API
    int await()
    Waits until all parties have invoked await on this barrier.
    int await(long timeout, TimeUnit unit)
    Waits until all parties have invoked await on this barrier.
    int getNumberWaiting()
    Returns the number of parties currently waiting at the barrier.
    int getParties()
    Returns the number of parties required to trip this barrier.
    boolean isBroken()
    Queries if this barrier is in a broken state.
    void reset()
    Resets the barrier to its initial state.


    3. Sample
    public class CyclicBarrierRunnable implements Runnable{

        CyclicBarrier barrier1 
    = null;
        CyclicBarrier barrier2 
    = null;

        
    public CyclicBarrierRunnable(
                CyclicBarrier barrier1,
                CyclicBarrier barrier2) 
    {

            
    this.barrier1 = barrier1;
            
    this.barrier2 = barrier2;
        }


        
    public void run() {
            
    try {
                Thread.sleep(
    1000);
                System.out.println(Thread.currentThread().getName() 
    +
                                    
    " waiting at barrier 1");
                
    this.barrier1.await();

                Thread.sleep(
    1000);
                System.out.println(Thread.currentThread().getName() 
    +
                                    
    " waiting at barrier 2");
                
    this.barrier2.await();

                System.out.println(Thread.currentThread().getName() 
    +
                                    
    " done!");

            }
     catch (InterruptedException e) {
                e.printStackTrace();
            }
     catch (BrokenBarrierException e) {
                e.printStackTrace();
            }

        }

    }



    public class CyclicBarrierMain {
        
        
    public static void main(String[] args){
            Runnable barrier1Action 
    = new Runnable() {
                
    public void run() {
                    System.out.println(
    "BarrierAction 1 executed ");
                }

            }
    ;
            Runnable barrier2Action 
    = new Runnable() {
                
    public void run() {
                    System.out.println(
    "BarrierAction 2 executed ");
                }

            }
    ;

            CyclicBarrier barrier1 
    = new CyclicBarrier(2, barrier1Action);
            CyclicBarrier barrier2 
    = new CyclicBarrier(2, barrier2Action);

            CyclicBarrierRunnable barrierRunnable1 
    =
                    
    new CyclicBarrierRunnable(barrier1, barrier2);

            CyclicBarrierRunnable barrierRunnable2 
    =
                    
    new CyclicBarrierRunnable(barrier1, barrier2);

            
    new Thread(barrierRunnable1).start();
            
    new Thread(barrierRunnable2).start();

        }

        Runnable barrier1Action 
    = new Runnable() {
            
    public void run() {
                System.out.println(
    "BarrierAction 1 executed ");
            }

        }
    ;
        Runnable barrier2Action 
    = new Runnable() {
            
    public void run() {
                System.out.println(
    "BarrierAction 2 executed ");
            }

        }
    ;
    }

    posted on 2011-05-07 15:35 XXXXXX 閱讀(646) 評論(0)  編輯  收藏 所屬分類: Programing

    主站蜘蛛池模板: 日产乱码一卡二卡三免费| 无码少妇一区二区浪潮免费| 亚洲Av无码乱码在线播放| 亚洲hairy多毛pics大全| 免费电影在线观看网站| 亚洲欧美乱色情图片| 在线观看免费污视频| 77777午夜亚洲| 日本a级片免费看| 九九久久精品国产免费看小说| 久久亚洲欧洲国产综合| 国产永久免费高清在线| 亚洲国产精品国自产拍电影| 8x8×在线永久免费视频| 亚洲人成7777影视在线观看| 最新猫咪www免费人成| 日韩a毛片免费观看| 亚洲乱码中文字幕综合 | 亚洲国产美女精品久久| 国产成在线观看免费视频| 亚洲欧美成aⅴ人在线观看| 波多野结衣免费视频观看| GOGOGO高清免费看韩国| 91久久亚洲国产成人精品性色| 91免费精品国自产拍在线不卡| 亚洲av日韩综合一区久热| 亚洲一区二区三区在线播放| 99re在线免费视频| 亚洲夂夂婷婷色拍WW47| 亚洲国产精品成人久久蜜臀| 日韩免费视频一区二区| 亚洲熟女乱色一区二区三区| 亚洲综合色成在线播放| 免费福利视频导航| 西西人体大胆免费视频| 久久亚洲精品成人无码网站| 四虎影在线永久免费观看| 免费国产黄网站在线观看视频| 亚洲a∨国产av综合av下载 | 久久国产乱子伦精品免费午夜| 亚洲妓女综合网99|