J'ai un thread consommateur prenant des éléments d'un LinkedBlockingQueue
, et je le fais dormir manuellement quand il est vide. J'utilise peek()
pour voir si la file d'attente est vide parce que je dois faire des choses avant d'envoyer le fil pour dormir, et je le fais avec queue.wait()
.Est-ce que add() sur LinkedBlockingQueue notifie les threads en attente?
Alors, quand je suis dans un autre thread et add()
un élément à la file d'attente, est-ce avertira automatiquement le fil qui était wait()
ing sur la file d'attente?
Il possède en fait deux verrous en interne, l'un traitant la notification de la file d'attente vide et l'autre de la file d'attente complète. Ils sont "privés" - pour de bonnes raisons - alors utilisez l'API telle qu'elle est destinée à être utilisée. –