生产消费模型与线程池哪个更好?

发布于 2022-09-12 23:54:12 字数 299 浏览 14 评论 0

之前我看过一本java多线程的书,专门讲如何用好多线程的,里面有一个比较好玩的做法,是通过一个ArrayBlockingQuene,一个生产线程和一个消费线程,当这个队列里面没有任务时,消费线程会自动挂起。当时觉得这个异步处理的方式非常牛,可以解决很多异步任务的问题。可是前一段时间又突然想起,线程池自带队列,不是更加方便简单吗?只需要submit(task)方法,线程池即可启用线程处理它,如果线程数不足,会自己排队处理,没有任务时同样线程池会自动挂起。
请问哪个方式更好呢?
线程池的代码是JDK自己实现的,会不会更好一些?可是线程池线程空闲的时候,会消耗大量资源吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

撕心裂肺的伤痛 2022-09-19 23:54:12

线程池本身就用到了生产者消费者模式:提交任务是生产,线程运行任务是消费
生产者消费者不是一种设计模式,更像是一种问题模式,可以通过各种方式实现和解决

一花一树开 2022-09-19 23:54:12

他们的使用场景是不同的,队列主要是用于线程之中,解决的是多线程的生产和消费问题,能够保证并发安全和任务的顺序性。而线程池,主要是解除任务的提交和执行的耦合度。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文