java.lang.IllegalStateException: Queue full


其實異常說的很清楚 隊列滿了!

ArrayBlockingQueue

 

FIFO 的隊列:

ArrayBlockingQueue內部是通過一個Object數組和一個ReentrantLock實現的。同時ReentrantLock在使用時也提供了公平和非公平兩種。
因為數組是有界的,所以在數組為空和數組已滿兩種情況下需要阻塞線程,所以使用了Condition來實現線程的阻塞。

 

初始化時候:

public ArrayBlockingQueue(int capacity) {
this(capacity, false);
}

public ArrayBlockingQueue(int capacity, boolean fair) {
if (capacity <= 0)
throw new IllegalArgumentException();
this.items = new Object[capacity];
lock = new ReentrantLock(fair);
notEmpty = lock.newCondition();
notFull = lock.newCondition();
}

 

 

 

其他的api 自己看源碼吧,。都有

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM