任何人都可以解释如何使用信号量编程Countdown latch作为唯一允许使用的同步原语。感谢。
答案 0 :(得分:1)
倒计时锁存器允许您等待锁存器,直到它的当前计数减少到零。这意味着你可以让一个线程等到其他线程完成一定数量的工作,每个线程在完成任何工作时都会倒计时。
信号量允许您为任务分配许可。您可能只需要10个许可证,因此要求许可证的第11个任务必须等到另一个任务返回一个。
例如,你可以拥有一个只有1个许可证的信号量,然后锁定它。这将导致与同步方法/块相同的行为。返回许可证后,另一个线程可以获取它以进入锁定的块。
sem.acquire();
doSomeStuff();
sem.release();
如果只用1个许可证初始化信号量,那么它与:
相同synchronized(someLock) {
doSomeStuff();
}