ArrayBlockingQueue介绍 ArrayBlockingQueue是最典型的有界阻塞队列,其内部是用数组存储元素的,初始化时需要指定容量大小,利用ReentrantLock实现线程安全。 在生产者-消费者模型中使用时,如果生产速度和消费速度基本匹配的情况下,使用ArrayBlockingQueue是个不错选择;当如果生产速度远远大于消费速度,则会导致队列填满,大量生产线程被阻塞。 使用独占锁ReentrantLock实现线程安全,入队和出队操作使用同一个锁对象,也就是只能有一个线程可以进行入队或者出队操作;这也就意味着生产者和消费者无法并行操作,在高并发场景下会成为性能瓶颈。
文章目录1、BlockingQueue1)接口方法2)阻塞队列分类2、ArrayBlockingQueue1)构造函数2)put()入队3)take()出队3、LinkedBlockingQueue1)构造函数2)put()入队3)take()出队1、BlockingQueueBlockingQueue是JUC包下提供的一个阻塞队列接口;1)接口方法队列操作抛出异常:add(e)、remove()、element()返回特定值:offer()队尾入队/poll()删除队头元素/peek()一直阻塞:put(e)/take()超时退出:offer(e,time,unit)/poll(time,u
文章目录1、BlockingQueue1)接口方法2)阻塞队列分类2、ArrayBlockingQueue1)构造函数2)put()入队3)take()出队3、LinkedBlockingQueue1)构造函数2)put()入队3)take()出队1、BlockingQueueBlockingQueue是JUC包下提供的一个阻塞队列接口;1)接口方法队列操作抛出异常:add(e)、remove()、element()返回特定值:offer()队尾入队/poll()删除队头元素/peek()一直阻塞:put(e)/take()超时退出:offer(e,time,unit)/poll(time,u