CountDownLatch:保持达到countDown的线程顺序

时间:2016-04-27 21:23:04

标签: java multithreading countdownlatch

当达到countDown时,是否可以保持线程的顺序。

如果线程1在线程2之前调用await,那么它们应该以相同的顺序重新排列。

这甚至没有任何意义:)?

2 个答案:

答案 0 :(得分:0)

您似乎在from setuptools import setup from setuptools.command.develop import develop from setuptools.command.install import install from subprocess import check_call class PostDevelopCommand(develop): """Post-installation for development mode.""" def run(self): check_call("apt-get install this-package".split()) develop.run(self) class PostInstallCommand(install): """Post-installation for installation mode.""" def run(self): check_call("apt-get install this-package".split()) install.run(self) setup( ... 谈论某种公平。

一般来说,公平性并不是倒计时锁存器的关注点(特别是在Java及其CountDownLatch实现中)。当达到预定义的倒计时数时,锁存器将发出所有等待它的线程的信号。

饥饿或调度顺序与此时的锁存功能正交 - 从等待线程的集合/队列中没有受控选择的概念,就像您可能使用信号量或互斥量一样。

答案 1 :(得分:0)

Dimitar Dimitrov说,

  

...从等待线程的集合/队列中没有受控选择的概念,就像你可能有信号量或互斥量一样。

这是因为Semaphore或Mutex上的单个操作只能释放一个等待线程。如果有多个线程正在等待,您可以通过说第一个操作释放这个线程来定义它们的释放顺序,然后下一个操作释放该线程,依此类推。

CountDownLatch是不同的,因为当理想行为是单个操作在同一时刻释放所有等待线程时,尝试定义一个顺序会有什么意义呢?