请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,多生产者消费之模式,使用RingBuffer,任务结束以后如何像 disruptor那样关闭了

老师,多生产者消费之模式,使用RingBuffer,任务结束以后如何像 disruptor那样关闭了

正在回答 回答被采纳积分+3

3回答

ymvkujn 2020-10-26 18:41:31


讲课的代码,创建了10个消费者,Consumer[] consumers = new Consumer[10];

workerPool.start(线程池)时, 如果采用Executors.newFixedThreadPool创建线程池,这里的构造参数一定要>=10个消费者,如果小于10,只会创建指定数量的消费者线程进行消费,且无法进行关闭。这里老师的示例代码留了一个坑,最后如果想关闭,可通过如下代码:

executorService.shutdown();
workerPool.drainAndHalt();

1 回复 有任何疑惑可以回复我~
平_常_心 2019-08-03 10:29:25

我也发现在多生产者和多消费者的模式下,程序在执行完并没有结束,而且CPU的使用率还非常高?这种真的不需要处理吗?

https://img1.sycdn.imooc.com//szimg/5d44f0d80864222015650148.jpg

https://img1.sycdn.imooc.com/szimg/5d44f0d90882ebf516000852.jpg



0 回复 有任何疑惑可以回复我~
阿神 2019-01-27 17:27:41

一般情况下不需要关闭
,如果单次执行,停止pool就可以了,

0 回复 有任何疑惑可以回复我~
  • 老师您说的是关闭线程池吧,workpool不用关吗
    回复 有任何疑惑可以回复我~ 2019-06-29 07:34:39
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信