BlockingQueue的核心方法

本文详细介绍了BlockingQueue的核心方法,包括数据的入队与出队操作。入队方法如put、add、offer及其带超时时间的版本,出队方法如take、poll及drainTo等。这些方法有助于实现线程间的数据传递与同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BlockingQueue的核心方法:

数据入队:

  1. void put(E e) :把Object加到BlockingQueue里,如果BlockQueue没有空间,则调用此方法的线程被阻断,直到BlockingQueue里面有空间再继续。
  2. boolean add(E e):把Object加到BlockingQueue里,如果BlockQueue没有空间,则抛出异常IllegalStateException: Queue full。
  3. boolean offer(E e):如果可能的话,将Object加到BlockingQueue里,如果BlockingQueue可以容纳,则返回true,否则返回false。(本方法不阻塞当前线程)
  4. boolean offer(E e, long timeout, TimeUnit unit):可以设定等待的时间,如果在指定的时间内,还不能往队列中加入,则返回失败。

数据出队:

  1. E take():取走BlockingQueue里排在首位的对象,若BlockingQueue为空,阻断进入等待状态直到BlockingQueue有新的数据被加入。
  2. E poll(long timeout, TimeUnit unit):从BlockingQueue取出一个队首的对象,如果在指定时间内,队列一旦有数据可取,则立即返回队列中的数据。否则直到时间超时还没有数据可取,返回失败。
  3. int drainTo():一次性从BlockingQueue获取所有可用的数据对象(还可以指定获取数据的个数)add到指定Collection。通过该方法,可以提升获取数据效率。不需要多次分批加锁或释放锁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值