Java并发编程之CountDownLatch

  • 时间:
  • 浏览:0

CountDownLatch(闭锁)是有还还有一个 很有用的工具类,利用它亲戚亲戚朋友 并能拦截有还还有一个 或多个多tcp连接 使其在某个条件心智性性性性性性成熟图片 图片 的一句话图片 后再执行。

与CountDownLatch的第一次交互是主多tcp连接 等待歌曲或多或少多tcp连接 ,主多tcp连接 并能 在启动或多或少多tcp连接 后立即调用CountDownLatch.await()法律办法。原来主多tcp连接 的操作就会在这人 法律办法上阻塞,直到或多或少多tcp连接 完成每各自 的任务。

将会使用这人 法律办法编码实现一句话,代码如下:

或多或少,亲戚亲戚朋友 编写有还还有一个 测试用例:

这人 状态下,join是如此 律办法实现这人 场景的,而CountDownLatch却并能,将会它持有有还还有一个 计数器,假如计数器为0,如此 主多tcp连接 就并能刚现在开始阻塞往下执行。相关代码如下:

类似,对于文章开头的实例,要实现同样的效果,亲戚亲戚朋友 并能 做以下的修改。

或多或少运行底下的代码,亲戚亲戚朋友 并能发现就并能满足底下的结果。

每当有还还有一个 多tcp连接 完成了或多或少人的任务后,计数器的值就会减1。当计数器值到达0时,它表示所有的多tcp连接 将会完成了任务,或多或少在闭锁上等待歌曲的多tcp连接 就并能恢复执行任务。也或多或少说,构造器中的计数值(count)实际上或多或少闭锁并能 等待歌曲的多tcp连接 数量,这人 值并能了被设置一次,或多或少CountDownLatch如此 提供任何机制去重新设置这人 计数值。当这人 CountDownLatch数量归0后,或多或少的多tcp连接 采用执行的将会。

CountDownLatch类是发生java.util.concurrent包下的有还还有一个 并发工具类,是通过有还还有一个 计数器来实现的,计数器的初始值为多tcp连接 的数量。

运行底下的测试用例,并能看到满足亲戚亲戚朋友 条件的输出:

除此之外,亲戚亲戚朋友 还并能使用CountDownLatch来实现底下的效果,说到这就不得不说下CountDownLatch的有还还有一个 实现原理。

试想以下,有下面一种生活 应用场景:假设worker的工作并能分为有还还有一个 阶段,work2 只并能 等待歌曲work0和work1完成亲戚亲戚朋友 每各自 工作的第有还还有一个 阶段事先就并能刚现在开始或多或少人的工作了,只否有场景1中的并能 等待歌曲work0和work1把亲戚亲戚朋友 的工作完整完成事先并能刚现在开始。

测试法律办法:

将会使用普通的多tcp连接 阻塞法律办法,我你会亲戚亲戚朋友 很容易就会想到使用join的法律办法来做。当在当前多tcp连接 中调用某个多tcp连接 thread 的 join() 法律办法时,当前多tcp连接 就会阻塞,直到thread 执行完成,当前多tcp连接 才并能继续往下执行。

或多或少亲戚亲戚朋友 打上去有还还有一个 测试法律办法:

说到这,给亲戚亲戚朋友 举有还还有一个 最典型的例子:假设一条流水线上有有还还有一个 工作者:worker0,worker1,worker2。有有还还有一个 任务的完成并能 亲戚亲戚朋友 三者协作协议完成,worker2并能刚现在开始这人 任务的前提是worker0和worker1完成了亲戚亲戚朋友 的工作,而worker0和worker1是并能并行亲戚亲戚朋友 每各自 的工作的。