潍坊百度网站建设昆明seo网站建设
多线程并发工具 CyclicBarrier
作用:计数器可循环使用,并且可以设置计数到期执行某个方法
**************************
相关类
public class CyclicBarrier {********
构造函数public CyclicBarrier(int parties)public CyclicBarrier(int parties, Runnable barrierAction)********
常用方法public int await() throws InterruptedException, BrokenBarrierExceptionpublic int await(long timeout, TimeUnit unit) throws InterruptedException, BrokenBarrierException, TimeoutException
*************************
示例
class Thread12 implements Runnable{private CyclicBarrier cyclicBarrier;Thread12(CyclicBarrier cyclicBarrier){this.cyclicBarrier=cyclicBarrier;}@Overridepublic void run() {try{System.out.println(Thread.currentThread().getName()+"开始运行");Thread.sleep(1000);cyclicBarrier.await();System.out.println(Thread.currentThread().getName()+"运行结束");}catch (Exception e){e.printStackTrace();}}
}class Task implements Runnable{@Overridepublic void run() {try{System.out.println();System.out.println("task 开始运行");Thread.sleep(1000);System.out.println("task 运行结束");System.out.println();}catch (Exception e){e.printStackTrace();}}
}public class ThreadTest12 {public static void main(String[] args){Task task=new Task();CyclicBarrier cyclicBarrier=new CyclicBarrier(5,task);Thread12 t=new Thread12(cyclicBarrier);for(int i=0;i<5;i++){Thread thread=new Thread(t,"线程"+i);thread.start();}}
}
*******************
控制台输出
线程1开始运行
线程3开始运行
线程0开始运行
线程4开始运行
线程2开始运行task开始运行
task 运行结束线程2运行结束
线程3运行结束
线程4运行结束
线程0运行结束
线程1运行结束