我已经读过使用Executor
接口比明确创建自己的线程更好的编程习惯。在我看来,创建自己的线程并在Thread
构造函数的参数中初始化它们要容易得多。使用Executor
而不是按照我迄今为止的方式创建线程有什么好处?
答案 0 :(得分:2)
创建线程是一项代价高昂的操作,因此最好将Thread返回给线程池。在为每个客户端请求分配线程的服务器中尤其需要这样做。
每次需要数百个请求并在每次需要时重新创建线程会对性能产生很大影响。
因此,在需要很少线程的情况下,您可以在没有Executor的情况下创建它们。如果您的应用程序可能会创建许多线程,请使用Executor。
答案 1 :(得分:1)
使用明确的Thread
对象即可获得:并行运行的线程。使用ExecutorService
即可获得:
ExecutorService
可以轻松实现生产者 - 消费者范例。
答案 2 :(得分:0)
其中一个优点是线程将从池中使用,而不是每次都创建。
根据oracle concurrency tutorial
执行程序定义用于启动和管理线程的高级API。 java.util.concurrent提供的执行程序实现提供了适用于大规模应用程序的线程池管理