Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 信号量作为唯一同步原语的倒计时锁存器_Java_Eclipse_Nachos - Fatal编程技术网

Java 信号量作为唯一同步原语的倒计时锁存器

Java 信号量作为唯一同步原语的倒计时锁存器,java,eclipse,nachos,Java,Eclipse,Nachos,有人能解释一下如何使用信号量作为唯一允许使用的同步原语来编程倒计时锁存器吗。?谢谢。倒计时闩锁允许您等待闩锁,直到其当前计数减少到零。这意味着您可以让一个线程等待,直到其他线程完成一定数量的工作,每个线程在完成任何任务时都会倒计时 该信号量允许您为任务分配许可。您可能只希望有10个许可证可用,因此请求许可证的第11个任务必须等待另一个任务返回一个许可证 例如,您可以让一个信号量只有一个许可证可用,并锁定它。这将导致与同步方法/块相同的行为。一旦许可证被退回,另一个螺纹可以获得它,以便进入锁定块

有人能解释一下如何使用信号量作为唯一允许使用的同步原语来编程倒计时锁存器吗。?谢谢。

倒计时闩锁允许您等待闩锁,直到其当前计数减少到零。这意味着您可以让一个线程等待,直到其他线程完成一定数量的工作,每个线程在完成任何任务时都会倒计时

该信号量允许您为任务分配许可。您可能只希望有10个许可证可用,因此请求许可证的第11个任务必须等待另一个任务返回一个许可证

例如,您可以让一个信号量只有一个许可证可用,并锁定它。这将导致与同步方法/块相同的行为。一旦许可证被退回,另一个螺纹可以获得它,以便进入锁定块

 sem.acquire();

 doSomeStuff();

 sem.release();
如果仅使用1个许可证初始化信号灯,则其与:

synchronized(someLock) {

  doSomeStuff();

}

由于我是java初学者,我不能完全理解信号量和倒计时锁存器。我在某处读到信号量和倒计时锁存器是两个不同的东西。我能在倒计时锁存器中使用信号量吗?下面是我需要使用的语法:public类CountDownLatch{public CountDownLatch(int count){}public void countDown(){}public void wait(){}public static void demo(String[]args){}