CyclicBarrier使用

package com.example.sina.thread;

import java.util.concurrent.*;

public class CyclicBarrierTest {
    
    public static void main(String[] args) throws InterruptedException {
        
        CyclicBarrier cyclicBarrier = new CyclicBarrier(4, new Runnable() {
            @Override
            public void run() {
                System.out.println("發車了");
            }
        });
        System.out.println(cyclicBarrier.getParties());
         
        for (int i = 0; i < cyclicBarrier.getParties(); i++) {
            Thread thread = new Thread(new CyclicWorker(cyclicBarrier));  
            thread.start();
        }
    }

    static class CyclicWorker implements Runnable {
        
        private CyclicBarrier cyclicBarrier;

        CyclicWorker(CyclicBarrier cyclicBarrier) {
            this.cyclicBarrier = cyclicBarrier;
        }

        @Override
        public void run() {
            for (int i = 1; i < 5; i++) {
                System.out.println("乘客:" + i);
                try {
                    cyclicBarrier.await();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } catch (BrokenBarrierException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章