1.0 KiB
1.0 KiB
CountDownLatch 原理剖析
在主线程中开启多个线程去执行任务,并且主线程需要等待所有子线程执行完毕后再进行汇总,之前用 join()方法实现,但是不够灵活,调用后会被阻塞直到子线程运行完毕 CountDownLatch 使用计数器来允许子线程运行完毕或在运行中递减计数
- void await ()
- boolean await (long timeout, TimeUnit unit)
- void countDown ()
- long getCount ()
回环屏障 CyclicBarrier 原理探究
让一组线程全部达到一个状态后再全部同时执行,所有线程执行完毕后重置 DyclicBarrier 状态后可以被重用
- int wait ()
- boolean await (long timeout, TimeUnit unit)
信号量 Semaphore 原理探究
内部计数器为递增的,一开始可以指定一个初始值,需要同步的地方调用 acquire 方法指定需要同步的线程个数
- void acquire ()
- void acquire (int permits)
- void acquireUninterruptibly ()
- void acquireUninterruptibly (int permits)
- void release ()
- void release (int permits)