Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Executor接口而不是显式创建线程_Java_Multithreading_Concurrency - Fatal编程技术网

Java 使用Executor接口而不是显式创建线程

Java 使用Executor接口而不是显式创建线程,java,multithreading,concurrency,Java,Multithreading,Concurrency,我已经读到,使用Executor接口比显式创建自己的线程更好。在我看来,创建自己的线程并在Thread构造函数的参数中初始化它们要容易得多。使用Executor而不是像我目前所做的那样创建线程有什么好处?创建线程的操作成本很高,因此最好将线程返回到线程池。这在服务器中尤其需要,在服务器中,为每个客户端请求分配一个线程 每秒有数百个请求,并且每次需要时都重新创建线程,这将极大地影响性能 因此,在需要少量线程的情况下,您可以在不使用Executor的情况下创建它们。如果您的应用程序可能会创建许多线程

我已经读到,使用
Executor
接口比显式创建自己的线程更好。在我看来,创建自己的线程并在
Thread
构造函数的参数中初始化它们要容易得多。使用
Executor
而不是像我目前所做的那样创建线程有什么好处?

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

每秒有数百个请求,并且每次需要时都重新创建线程,这将极大地影响性能


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

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

根据甲骨文

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


有一个显式的
Thread
对象,这就是你所得到的:一个并行运行的线程。使用
执行器服务
您可以获得:

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

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

只是感兴趣(如果你不介意的话)——甚至在询问之前尝试过使用google?我在google中查找了它,但只出现了大量教程。对不起,耽误了你的时间。