用dw做的网站怎样弄上网上,济宁 网站建设,软件开发工程师岗位要求,六安事件最新情况CyclicBarrier是什么 CyclicBarrier也叫同步屏障#xff0c;在JDK1.5被引入#xff0c;可以让一组线程达到一个屏障时被阻塞#xff0c;直到最后一个线程达到屏障时#xff0c;所以被阻塞的线程才能继续执行。CyclicBarrier好比一扇门#xff0c;默认情况下关闭状态#… CyclicBarrier是什么 CyclicBarrier也叫同步屏障在JDK1.5被引入可以让一组线程达到一个屏障时被阻塞直到最后一个线程达到屏障时所以被阻塞的线程才能继续执行。CyclicBarrier好比一扇门默认情况下关闭状态堵住了线程执行的道路直到所有线程都就位门才打开让所有线程一起通过。 构造方法 默认的构造方法是CyclicBarrier(int parties)其参数表示屏障拦截的线程数量每个线程调用await方法告诉CyclicBarrier已经到达屏障位置线程被阻塞。另外一个构造方法CyclicBarrier(int parties, Runnable barrierAction)其中barrierAction任务会在所有线程到达屏障后执行。 CyclicBarrier.png 应用场景 想象一个场景运动会男子100米决赛8名选手。 Athlete.java 每个运动员都就位后才开始。 class Athlete implements Runnable {private CyclicBarrier cyclicBarrier;private String name;public Athlete(CyclicBarrier cyclicBarrier, String name) {this.cyclicBarrier cyclicBarrier;this.name name;}Overridepublic void run() {System.out.println(name 就位);try {cyclicBarrier.await();Random random new Random();double time random.nextDouble() 9;System.out.println(name : time);} catch (Exception e) {}}
} Race.java 负责屏障的初始化。 class Race {private CyclicBarrier cyclicBarrier new CyclicBarrier(8);public void start() {ListAthlete athleteList new ArrayList();athleteList.add(new Athlete(cyclicBarrier,博尔特));athleteList.add(new Athlete(cyclicBarrier,鲍威尔));athleteList.add(new Athlete(cyclicBarrier,盖伊));athleteList.add(new Athlete(cyclicBarrier,布雷克));athleteList.add(new Athlete(cyclicBarrier,加特林));athleteList.add(new Athlete(cyclicBarrier,苏炳添));athleteList.add(new Athlete(cyclicBarrier,路人甲));athleteList.add(new Athlete(cyclicBarrier,路人乙));Executor executor Executors.newFixedThreadPool(8);for (Athlete athlete : athleteList) {executor.execute(athlete);}}
} 转载于:https://www.cnblogs.com/diegodu/p/7339423.html