Thread和Threadpool之间的区别

时间:2011-07-06 07:32:54

标签: java multithreading thread-safety threadpool

任何人都可以通过Thread和ThreadPool的例子来指导我们它们之间的区别吗?哪个最好用...?

的缺点是什么?

2 个答案:

答案 0 :(得分:10)

由于一个线程只能运行一次,所以你必须为每个任务使用一个线程。但是,创建和启动线程有点昂贵,并且可能导致太多线程等待执行的情况(现在不记得确切的名称) - 这进一步降低了性能。

线程池 - 顾名思义 - 是一个始终运行的工作线程池。然后,这些线程通常从列表中获取任务,执行它们,然后尝试执行下一个任务。如果没有任务,线程将等待。

使用线程池有几个优点:

  • 您不必为每个任务创建一个帖子
  • 您通常拥有系统的最佳线程数(也取决于JVM)
  • 您可以专注于编写任务并使用线程池来管理基础架构

编辑:以下是关于并发性的一些非常好的文章:Sutter's Mill,请查看底部以获取更多链接。虽然它们主要是为C / C ++编写的,但一般概念是相同的,因为它还描述了并发解决方案和硬件之间的相互依赖性。理解并发性能问题的一篇好文章是this article on drdobbs.com

答案 1 :(得分:3)

线程池是一组线程,分配用于执行统一的任务。 使用线程池模式的优点是您可以定义允许同时执行的线程数。这是为了避免由于高CPU负载或内存不足而导致服务器崩溃,例如:服务器的硬件容量最多只能支持每秒100个请求。

数据库池与线程池具有相似的概念。

此模式广泛用于大多数后端服务器的应用程序。

虽然线程是执行任务的单位。