java-synchronized

其实异常说的很清楚 队列满了!

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

 

分类:

技术点:

相关文章:

  • 2021-07-31
  • 2021-10-12
  • 2021-09-27
  • 2022-12-23
  • 2022-12-23
  • 2021-10-02
  • 2021-08-17
猜你喜欢
  • 2021-12-23
  • 2021-10-08
  • 2021-11-17
  • 2021-07-04
  • 2021-12-08
  • 2022-01-24
相关资源
相似解决方案