【Java并发编程系列6】同步工具类

主要讲解Java常用的同步工具类,包括闭锁/FutureTask/信号量/栅栏,最后还对“创建线程的三种方式”进行简单的扫盲。
前言
《Java并发编程实战》这本书看到第五章了,里面的同步工具类感觉比较常用,就简单总结一下。不过在讲“同步工具类”前,大家需要对创建线程的三种方法非常清楚,如果这个不清楚的话,直接看示例可能不太懂,文章最后面有“创建线程的三种方式”内容,已经给Java小白扫盲,谁让楼哥是暖男呢。
同步工具类
闭锁
用途:可用于命令一组线程在同一个时刻开始执行某个任务,或者等待一组相关的操作结束,尤其适合计算并发执行某个任务的耗时。
public class CountDownLatchTest {
public void timeTasks(int nThreads, final Runnable task) throws InterruptedException {
final CountDownLatch startGate = new CountDownLatch(1);
final CountDownLatch endGate = new CountDownLatch(nThreads);
for (int i = 0; i < nThreads; i++) {
Thread t = new Thread() {
@Override
public void run() {
try {
// 阻塞,等待startGate.countDown()的执行
startGate.await();
try {
task.run();
} finally {
// 每次执行完毕后,计数器减1,表示有一个事件已经完成
...真诚点赞 诚不我欺
回复