在Java中,我们可以通过使用Lock接口和ReentrantLock
类来实现公平性,如下所示:
Lock lock=new ReentrantLock(true);
一旦我们实现了公平性,那么在多个线程等待访问锁的情况下,等待最多持续时间的线程将被授予锁定权限。
任何人都可以提供JVM
如何保持线程等待很长时间的详细信息,即JVM
如何实现公平性。
答案 0 :(得分:1)
详细信息在源代码中。源代码可以通过Google搜索找到:
代码得到了极好的评论。
简短的回答是每个锁都有一个等待线程的队列,它被实现为一个链表。
在" fair" case,当队列非空时尝试获取锁的线程被添加到队列的末尾。
在"不公平"如果锁定当前空闲,则线程可能会插入。这样可以提供更好的性能,因为您不需要进行需要系统调用的线程上下文切换。