atomic包
轻量级无锁原子同步工具包,提供多个原子型基本数据结构封装(AtomicBoolean、AtomicInteger等),用于支持原子级别的线程安全读写,适用于全局状态共享同步。
CountDownLatch
倒计数阻塞器,初始数字倒计到 0 时,被其阻塞的线程将被放行并继续工作,主要用于主线程需要等待多个子线程执行完毕并返回结果的场景。
CountDownLatch 变量通常存在于主线程对象内。
CountDownLatch 只能一次性使用,倒计数到达 0 时,CountDownLatch 对象将永久失去阻塞效果。
主要方法
- await():阻塞当前线程(通常为主线程)
- countDown():初始数字减少 1 (代表其中一项子线程执行完毕)
CyclicBarrier
环形阻拦器,初始数字倒计到 0 时,所有被阻塞的线程将被同时放行并开始工作,主要用于多个线程需要等待同一时刻并发执行的场景。
CyclicBarrier 变量通常被所有阻塞线程共享。
CyclicBarrier 可重复使用,初始数字倒计到 0 时再次调用 await()
方法,初始数字将回归原始状态并进入新一轮阻塞过程。
CyclicBarrier 在功能上可与 CountDownLatch 交换使用。
主要方法
- await():当前线程加入到阻塞列表,初始数字减少 1 (表示其中一项子线程准备就绪)
Semaphore
信号量,用于设置定量的许可数量,通过获取、释放许可的方式,控制可同时执行的线程数量(并发数控制)。
主要方法
- acquire():获取执行许可权限,未得到许可前当前线程将被阻塞
- tryAcquire():非阻塞式获取执行许可,未得到许可将立即返回 false
- release():释放许可权限,回收到权限池
网友评论