1、如果隊(duì)列已經(jīng)滿了,執(zhí)行put操作的新線程將被添加到notFull的條件隊(duì)列中等待。
2、隊(duì)列未滿,當(dāng)有線程執(zhí)行移除隊(duì)列元素的操作時(shí),移除成功并喚醒put線程。
實(shí)例
public E take() throws InterruptedException {
final ReentrantLock lock = this.lock;
lock.lockInterruptibly();
try {
// 隊(duì)列長(zhǎng)度為0
while (count == 0)
// 阻塞
notEmpty.await();
// 如果隊(duì)列有元素執(zhí)行刪除操作
return dequeue();
} finally {
lock.unlock();
}
}
/** Condition for waiting takes */
private final Condition notEmpty;
以上就是java線程執(zhí)行的兩種情況,希望對(duì)大家有所幫助。更多關(guān)于“java培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學(xué),課程大綱緊跟企業(yè)需求,更科學(xué)更嚴(yán)謹(jǐn),每年培養(yǎng)泛IT人才近2萬(wàn)人。不論你是零基礎(chǔ)還是想提升,都可以找到適合的班型,千鋒教育隨時(shí)歡迎你來試聽。