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 自己看源码吧,。都有

 

posted @ 2018-01-18 11:12  指针怒草内存栈  阅读(7483)  评论(0编辑  收藏  举报