Thread和Threadpool之间的区别

Sye*_*her 5 java multithreading thread-safety threadpool

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

Tho*_*mas 10

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

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

使用线程池有几个优点:

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

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