2

我正在使用 Java 6,并阅读 Java Concurrency in Practice。我试图弄清楚在使用这些方法时,等待锁定的休眠线程是否在休眠时使用任何 CPU 周期。有人知道吗?谢谢!

马特

4

1 回答 1

5

任何动作都会消耗时钟周期。然而,当一个线程被挂起时,时钟周期数是固定的,并不取决于它被挂起的时间。如果线程即使在相对较短的时间内被挂起,这也很好,但是在很短的时间内它的效率不是很高,这就是为什么 Lock 不会立即挂起线程而是重试少量次以获得在挂起线程之前锁定(希望它可以避免这样做)

我假设您正在谈论 ReentrantReadWriteLock.readLock() 和 ReentrantReadWriteLock.writeLock() 支持的 Lock.lock() 。

于 2011-03-15T21:09:17.043 回答