1. Si la file d'attente est pleine, le nouveau thread effectuant l'opération put sera ajouté à la file d'attente des conditions notFull pour attendre.
2. La file d'attente n'est pas pleine. Lorsqu'un thread effectue l'opération de suppression de l'élément de file d'attente, la suppression est réussie et le thread mis est réveillé.
Instances
public E take() throws InterruptedException { final ReentrantLock lock = this.lock; lock.lockInterruptibly(); try { // 队列长度为0 while (count == 0) // 阻塞 notEmpty.await(); // 如果队列有元素执行删除操作 return dequeue(); } finally { lock.unlock(); } } /** Condition for waiting takes */ private final Condition notEmpty;
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!