there is no real reason ever to have a binary semaphore as everything that a
binary semaphore can do can also be done by a ReentrantLock
如果你需要的是可重入的互斥,那么是的,没有理由在ReentrantLock上使用二进制信号量。如果由于任何原因,您需要非所有权发布语义,那么明显的信号量是您唯一的选择。
Also since reentrant locks also provide one lock per object, isn’t it
always a better idea to prefer a reentrant lock to a binary semaphore?
这取决于需要。像以前解释的,如果你需要一个简单的互斥体,那么不要选择一个信号量。如果多个线程(但有限的数量)可以进入关键部分,则可以通过线程限制或信号量来执行此操作。
I have checked a post here that talks about difference between a
binary semaphore and a mutex but is there a thing like a mutex in
Java?
ReentrantLock和synchronized是Java中的互斥体的例子。