多线程-CyclicBarrier

来源:互联网 发布:网站常用数据库 编辑:程序博客网 时间:2024/06/07 08:30


package cn.stu;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;public class Worker implements Runnable{private CyclicBarrier cb; public Worker(CyclicBarrier cb){this.cb = cb;}@Overridepublic void run() {try {System.out.println("人员还没到期");cb.await();System.out.println("开始开工了..............");} catch (InterruptedException e) {e.printStackTrace();} catch (BrokenBarrierException e) {e.printStackTrace();} } }

package cn.stu;import java.util.concurrent.CyclicBarrier;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/*** *        这个类, 只有线程数到指定的数, 这里是设置为4,  然后所有等待的线程就开始激活了,  这里表现是一个递增,    CountDownLatch 这个表示的是递减。          作用都是到了一个点,就全部触发型处理的模式。* */public class Main {public static void main(String[] args) {  CyclicBarrier  cb = new CyclicBarrier(4, new Runnable() {@Overridepublic void run() { System.out.println("已经到触发点了, 可以动工了......");}});ExecutorService  exec = Executors.newFixedThreadPool(6); // 这个数不能比4小, 小的话,线程都是挂起了,永远激活不了了。Worker worker = new Worker(cb);for(int i = 0; i<4; i++){exec.submit(worker); // 这个方法启动只会调用一条线程。}exec.shutdown();  }}


0 0
原创粉丝点击