2

我读过使用Executor接口比显式创建自己的线程更好的编程实践。在我看来,创建自己的线程并在Thread构造函数的参数中初始化它们要容易得多。Executor到目前为止,使用而不是创建线程的优点是什么?

4

3 回答 3

2

创建线程是一项昂贵的操作,因此最好将 Thread 返回到线程池。这在为每个客户端请求分配一个线程的服务器中尤其需要。

每秒有数百个请求并在每次需要时重新创建线程会极大地影响性能。

因此,在需要少量线程的情况下,您可以在没有 Executor 的情况下创建它们。如果您的应用程序可能会创建许多线程,请使用 Executor。

于 2012-11-21T14:53:03.217 回答
1

有了一个明确Thread的对象,你就可以得到:一个并行运行的线程。ExecutorService你得到:

  • 在任务执行之间回收的线程池。
  • 线程安全的阻塞任务队列,线程自动检查新任务。
  • 隐式负载平衡。
  • 隐式效率,因为避免了线程创建开销。

ExecutorService允许轻松实现生产者-消费者范式。

于 2012-11-21T15:40:16.310 回答
0

优点之一是线程将从池中使用,而不是每次都创建。

按照oracle并发教程

执行器定义了一个用于启动和管理线程的高级 API。java.util.concurrent 提供的 Executor 实现提供了适合大规模应用的线程池管理

于 2012-11-21T14:53:36.400 回答