Используют ли неактивные потоки, созданные методами readLock() или writeLock() в классе ReentrantReadWriteLock, циклы ЦП?

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

Matt

1 ответ

Решение

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

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

Другие вопросы по тегам