【发布时间】:2020-12-05 10:15:29
【问题描述】:
带有类 Reentrant(true) 锁的 Lock 接口的工作方式是它使用 BlockingQueue 来存储想要获取 锁 的线程。以这种方式“先来,先出去”的线程 - FIFO。一切都清楚。
但是“不公平的锁”去哪里了,或者 ReentrantLock(false)。他们的内部实现是什么?操作系统如何决定现在选择哪个线程?最重要的是现在这些线程也存储在队列中还是在哪里? (它们一定在某个地方)
【问题讨论】:
-
“队列”在操作系统本身,它通常存储被阻塞的线程。操作系统没有指定队列算法是什么(或者至少它通常不会,因此可移植的 Java 必须假设最坏的情况),因此 Java 假设它是不公平的。
标签: java locking reentrantlock