生产消费模型与线程池哪个更好?
之前我看过一本java多线程的书,专门讲如何用好多线程的,里面有一个比较好玩的做法,是通过一个ArrayBlockingQuene,一个生产线程和一个消费线程,当这个队列里面没有任务时,消费线程会自动挂起。当时觉得这个异步处理的方式非常牛,可以解决很多异步任务的问题。可是前一段时间又突然想起,线程池自带队列,不是更加方便简单吗?只需要submit(task)方法,线程池即可启用线程处理它,如果线程数不足,会自己排队处理,没有任务时同样线程池会自动挂起。
请问哪个方式更好呢?
线程池的代码是JDK自己实现的,会不会更好一些?可是线程池线程空闲的时候,会消耗大量资源吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
线程池本身就用到了生产者消费者模式:提交任务是生产,线程运行任务是消费
生产者消费者不是一种设计模式,更像是一种问题模式,可以通过各种方式实现和解决
他们的使用场景是不同的,队列主要是用于线程之中,解决的是多线程的生产和消费问题,能够保证并发安全和任务的顺序性。而线程池,主要是解除任务的提交和执行的耦合度。