Files
Hui-s-notebook/Java 并发包中线程同步器原理剖析.md
2023-09-10 10:50:53 +08:00

1.0 KiB
Raw Blame History

CountDownLatch 原理剖析

在主线程中开启多个线程去执行任务,并且主线程需要等待所有子线程执行完毕后再进行汇总,之前用 join方法实现但是不够灵活调用后会被阻塞直到子线程运行完毕 CountDownLatch 使用计数器来允许子线程运行完毕或在运行中递减计数

  1. void await ()
  2. boolean await (long timeout, TimeUnit unit)
  3. void countDown ()
  4. long getCount ()

回环屏障 CyclicBarrier 原理探究

让一组线程全部达到一个状态后再全部同时执行,所有线程执行完毕后重置 DyclicBarrier 状态后可以被重用

  1. int wait ()
  2. 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)