Может ли уведомление активировать один и тот же поток несколько раз?

Представьте, что у вас есть типичный шаблон производитель-потребитель в Java. Чтобы быть немного более эффективным, вы хотите использовать notify(), а не notifyAll()при добавлении нового элемента в очередь. Если два потока-производителя вызывают уведомление, гарантируется ли пробуждение двух отдельных ожидающих потоков-потребителей? Или может быть так, что два notify(), запущенные вскоре друг за другом, приводят к тому, что один и тот же потребительский поток дважды ставится в очередь для пробуждения? Я не могу найти раздел API, описывающий, как это работает. Есть ли в java какая-то атомарная внутренняя операция для пробуждения потоков ровно один раз?

Если только один потребитель ожидает, то второе уведомление будет потеряно, это не проблема.

9
задан Gray 21 May 2012 в 12:33
поделиться