Java并发编程之阻塞队列与Fork/Join框架

本文介绍了Java并发编程中的阻塞队列,包括其工作原理、四种处理方式及Java提供的六种阻塞队列实现。接着详细讲解了Fork/Join框架,阐述了工作窃取算法和框架的设计思路,并给出了示例。
摘要由CSDN通过智能技术生成

阻塞队列

阻塞队列是支持两个附加操作的队列。这两个附加操作支持阻塞插入和移除方法:

  • 阻塞启用的插入:当队列满时,它会阻塞插入元素的线程,直到队列不满意为止。
  • 阻塞删除:当队列为空时,检索元素的线程等待队列变为非空。

阻塞队列通常用于生产者-消费者场景。生产者是向队列添加元素的线程,使用者是将元素从队列中取出的线程,阻塞队列是存储和检索元素的容器。

阻塞队列的4种处理方式:

  1. 抛出异常:
    • add(e) 当队列满,再插入元素,抛出异常
    • remove() 当队列空,再删除元素,抛出异常
    • element() 获取元素
  2. 返回特殊值:
    • offer(e) 插入元素时,插入成功返回true
    • poll() 移除元素,成功返回该值,否则返回null
    • peek()
  3. 一直阻塞:
    • put(e) 当阻塞队列满时,再插入时会阻塞生产者线程,直到队列可用或中断退出
    • take() 当队列空,再移除元素会阻塞消费者线程,直到队列不空
  4. 超时退出
    • offer(e, time, unit) 队列满时再插入元素,阻塞,超时退出
    • poll(time, unit) 队列空时移除元素,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值