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