BlokingQueue的实现类ArrayBlockingQueue的api,详解

顾名思义

阻塞队列

在多线程领域:所谓阻塞,在某些情况下,会挂起(阻塞),一旦满足条件 被挂起的线程又会被自动唤醒

为什么需要BlockingQueue

好处是我们不用关心什么时候需要阻塞线程,什么时候需要被唤醒,因为这一切被BlockingQueue包办

介绍:

ArrayBlockingQueue:有数组结构构成的有界阻塞队列

解析:

抛出异常:

    当阻塞队列满时,再往里面add 插入元素会抛出异常 当阻塞队列空时,再往里面remove移除元素会抛出NoSuchElementException

特殊值

    插入方法,成功true,失败false 移除方法,成功返回队列元素,队列没有返回null

一直阻塞

    当队列满时,生产者线程继续往队列put元素,队列会一直产生线程直到put数据or响应中断退出 当阻塞队列空时,消费者线程试图从队列中take元素,队列会一直阻塞消费者线程知到队列可用

超时退出

    当阻塞队列满时,队列会阻塞生产者线程一定时间,超过限时后生产者线程会退出

其余实现类(略微带过)

LinkedBlockingQueue:由链表结构组成的有界

    (但大小默认值为integer:MAX_VALUE(约21亿))阻塞队列

SynchronousQueue:

    不存储元素的阻塞队列,也即单个元素的队列

linkedBlockingDeque:

    有链表组成的双向阻塞队列
经验分享 程序员 微信小程序 职场和发展