package com.basic; import java.util.concurrent.*; /** * @program JavaBooks * @description: CyclicBarrierç使ç¨ç¤ºä¾ * @author: mf * @create: 2020/01/09 17:17 */ public class T34 { // 请æ±çæ°é private static final int threadCount = 30; // éè¦åæ¥ççº¿ç¨æ°é private static final CyclicBarrier cyclicBarrier = new CyclicBarrier(5); public static void main(String[] args) throws InterruptedException { ExecutorService service = Executors.newFixedThreadPool(10); for (int i = 0; i < threadCount; i++) { final int threadNum = i; Thread.sleep(1000); service.execute(() -> { test(threadNum); }); } service.shutdown(); } private static void test(int threadNum) { System.out.println("threadNum: " + threadNum + " is ready"); try { cyclicBarrier.await(60, TimeUnit.SECONDS); // çå¾ 60sï¼ä¿è¯å线ç¨å®å ¨æ§è¡ç»æ } catch (InterruptedException e) { e.printStackTrace(); } catch (BrokenBarrierException e) { e.printStackTrace(); } catch (TimeoutException e) { e.printStackTrace(); } System.out.println("threadNum: " + threadNum + " finish..."); } }