1、如果隊列已經滿了,執行put操作的新線程將被添加到notFull的條件隊列中等待。
2、隊列未滿,當有線程執行移除隊列元素的操作時,移除成功并喚醒put線程。
實例
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;
以上就是java線程執行的兩種情況,希望對大家有所幫助。更多關于“java培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學,課程大綱緊跟企業需求,更科學更嚴謹,每年培養泛IT人才近2萬人。不論你是零基礎還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。