abdstime 2020-01-17
public class SimulateHighConcurrency { public static void run(int num, Consumer<Thread> action) { Objects.requireNonNull(action); CountDownLatch countDownLatch = new CountDownLatch(1); for (int i = 0; i < num; i++) { new Thread(() -> { try { action.accept(Thread.currentThread()); countDownLatch.await(); } catch (InterruptedException e) { e.printStackTrace(); } }).start(); } //线程创建完成之后同时启动 countDownLatch.countDown(); } public static void main(String[] args) throws InterruptedException { CountDownLatch doneSignal = new CountDownLatch(2000); SimulateHighConcurrency.run(2000, (t) -> { System.out.println(t.getName()); doneSignal.countDown(); }); doneSignal.await(); System.out.println("done"); } }