ThreadPoolExecutor线程池方式实现生产者消费者模式

本文档介绍了如何利用Java的ThreadPoolExecutor线程池和LinkedBlockingQueue队列来实现生产者消费者模式。重点讨论了实验中遇到的难点,如线程关闭、阻塞队列的方法选择,并提供了BlockingQueue的关键操作解释。
摘要由CSDN通过智能技术生成

实现多线程的生产者消费者模式。

 

描述:利用ThreadPoolExecutor线程池,LinkedBlockingQueue队列进行消息缓存,实现生产者消费者模式。

本次实验难点(对本人菜鸟而言):

  1. 使用计时的手段来判断是否已经没有生产者提供消息了,以便关闭消费者线程。
  2. 第一次使用LinkBlockingQueue的方式实现,所以没有区分add(),put的区别,以及take(),poll()的区别。导致前期没办法进入计时的代码,程序一直没有关闭。
  3. 程序没有关闭的原因还有是线程池没有手动shutdown()的缘故,放到main()后面,就行了。在main方法结尾必须判断是否还有存活的线程,然后手动关闭线程池,这样才可以让程序自动停止。

BlockingQueue定义的常用方法如下

 

抛出异常

特殊值

阻塞

超时

插入

add(e)

offer(e)

put(e)

offer(e,time,unit)

移除

remove()

poll()

take()

poll(time,unit)

检查

element()

peek()

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值