java BlockingQueue简单介绍

简介

BlockingQueue位于java.util.concurrent,用于解决多线程环境下的数据传输问题.
首先,它是一个queue,也就是说,它是一个队列,blocking,即其可以阻塞,也就是说,当出现取数据方无法取数据(如队列空)或者生产数据方无法加入数据(如队列满)时,它可以阻塞.
其本身是一个interface,规定了一个规范,定义为

public interface BlockingQueue<E> 
extends Queue<E>

方法简介

boolean add(E e) 
//立即插入一个元素 如果没有空间,抛出IllegalSttateException异常,成功返回true
boolean contains(Object o)
//如果拥有元素则返回true
int drainTo(Collection<? super E> c)
//将所有有效元素移动到Collection中,然后消除这些元素
int drainTo(Collection<? super E> c, int maxElements)
//删除最多maxElements个有效元素,并且放入指定的Collection中
boolean offer(E e)
//立即插入一个元素,如果没有空间返回false,成功返回true
E poll(long timeout, TimeUnit unit)
//获取并且删除队列首, 等待最多unit的时间,如果需要一段时间才能使元素有效
void put(E e)
//将元素e放入队列,如果需要等待则等待
int remainingCapacity()
//返回理论上这个队列在不需要等待的情况下可以使用的元素个数, 如果没有限制则返回Max_Value
boolean remove(Object o)
//如果存在,则删除一个元素
E take()
//获取队首元素,如果需要等待,则等待到其有效

常用的BlockingQueue

ArrayBlockingQueue

用数组实现的阻塞队列.与常见队列实现类似

LinkdedBlockingQueue

用链表实现的阻塞队列,

DelayQueue

只有当延迟时间到时才能够获取到元素

PriorityBlockingQueue

基于优先级的阻塞队列,这个队列不会阻塞生产者

SynchronousQueue

一种无缓冲的等待队列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值