
其實異常說的很清楚 隊列滿了!
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 自己看源碼吧,。都有
