CountDownLaunch
通常用于监听某些初始化操作,当初始化执行完毕后,通知主线程继续工作。
CountDownLatch countDownLatch = new CountDownLatch(2);
// 只有调用两次countDownLatch.countDown(); await才能被唤醒;
countDownLatch.await();
doSomething();
CyclicBarrier
当所有线程都准备就绪后才一起执行。
CyclicBarrier cyclicBarrier = new CyclicBarrier(2);
// 只有调用两次cyclicBarrier.await(); await才能被唤醒;
cyclicBarrier.await();
doSomething();
Callable和Future
Semaphore
Semaphore semaphore = new Semaphore(5); // 并发的只有5个线程可以访问
// 获取访问许可
Semaphore.acquire();
doSomething();
// 访问完后,释放
Semaphore.release();
https://juejin.im/post/5c89c93bf265da2de71391ec?utm_source=gold_browser_extension#heading-83