阻塞队列

对于多线程间的数据共享,可以使用阻塞队列(BlockingQueue)来实现,它为我们自动管理多线程环境下的等待与唤醒问题,让程序员可以忽略这些细节,专注于高层次的业务功能。

会抛出异常的方法:
add(添加一个元素)、element(返回队列的头元素)、remove(移出并返回头元素)
会阻塞的方法:
put(添加一个元素)、take(移出并返回头元素)
不抛出异常不阻塞只改变返回值的方法:offer(添加一个元素并返回true,可带超时参数)、peek(返回队列的头元素)、poll(移出并返回队列的头元素 ,可带超时参数)

以下是BlockingQueue家族的成员:
1.ArrayBlockingQueue
基于数组实现,声明时要指明容量,入队/出队操作共用一个锁,无法做到严格意义上的并行, 默认为非公平模式。
2.LinkedBlockingQueue
基于链表实现,声明时若不指定容量,则默认容量为Integer.MAX_VALUE,接近无限大,运行时有耗尽内存的风险。入队/出队操作用两个锁,可以并行,提高了性能。
3.DelayQueue
无大小限制,只有队列中元素的延迟时间到了,才能获取到该元素。
4.PriorityBlockingQueue
无大小限制,优先级的判断通过构造函数传入的Compator对象来决定。
5.SynchronousQueue
无缓冲队列,默认为非公平模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值