Я знаю, что только один поток получит блокировку монитора. Но что будет со всеми остальными ждать() потоков нитей на низком уровне? (Поскольку все они уведомлены) Будут ли все просыпаться и войти в какой-то дорогой спин-замок? Или они снова вернутся к блокировке на замке? Ищете сведения о низком уровне - особенно, пытаясь понять, будет ли в результате этого потреблять процессор?Что происходит с notifyAll()?
Также, когда нить ждет на мониторе, является ли фактическая потоки операционной системы удалены из нее за кулисами? (Чтобы поток ОС мог использоваться для полезной работы)
Что говорит джавадок? –
, как говорится в названии: 'notifyAll()' будет уведомлять (просыпаться) все потоки, которые ждали (с 'wait()') на конкретном объекте! Все потоки выполняют следующую строку после 'wait()' – ParkerHalo
. Я бы сказал, что, если бы кто-либо из них имел значение в вашем прецеденте (с точки зрения производительности), вы бы знали подробности. В документации рекомендуется использовать 'notifyAll()', поэтому я предлагаю вам пойти с этим и перестать беспокоиться о вашем процессоре. – Kayaman