JUC集合-BlockingQueue
BlockingQueue 阻塞队列,支持两个附加操作。
1,在队列为空时,获取元素的线程会等待对列变为非空。
2,在队列为满时,存储元素的线程会等待对列可用。
使用场景:
生产者往对列里添加元素
消费者从对列里拿元素
操作
方法\处理 | 抛异常 | 返回特殊值 | 一直阻塞 | 超时退出 |
入队 | add(e) | offer(e) | put(e) | offer(e, time, unit) |
出队 | remove | poll | take | poll(time, unit) |
查询 | element | peek |
-
抛出异常:满队列时,执行入队会抛出异常;空队列时执行出队会抛出异常 。
-
返回特殊值:入队操作会返回布尔值;出队操作成功返回操作值,失败返回空值。
-
一直阻塞:满队列时,执行入队会进入条件等待队列,线程阻塞;空队列时,执行出队会进入条件等待队列,线程阻塞 。
-
超时退出:满队列时,执行入队会阻塞生产者线程一段时间,如果超过一定的时间,生产者线程就会退出。