Неактивные ли потоки, созданные методами readLock () или writeLock () в классе ReentrantReadWriteLock, потребляют циклы ЦП? - PullRequest
2 голосов
/ 15 марта 2011

Я использую Java 6 и на практике читаю через Java Concurrency. Я пытаюсь выяснить, использует ли эти методы, если неактивный поток, ожидающий блокировки, использует какие-либо циклы ЦП, пока он не используется Кто-нибудь знает? Спасибо!

Мэтт

1 Ответ

4 голосов
/ 16 марта 2011

Любое действие потребляет такты. Однако, когда поток приостанавливается, число тактовых циклов является фиксированным и не зависит от того, на какой срок он приостановлен. Это хорошо, если поток приостанавливается хотя бы на относительно короткий промежуток времени, но в течение очень короткого периода времени он не очень эффективен, поэтому Lock не приостанавливает поток сразу, а повторяет попытку несколько раз, чтобы получить блокировка перед приостановкой потока (в надежде избежать этого)

Я предполагаю, что вы говорите о Lock.lock (), который поддерживают ReentrantReadWriteLock.readLock () и ReentrantReadWriteLock.writeLock ().

...