Java 使用Executors.newSingleThreadExecutor()的优点

Java 使用Executors.newSingleThreadExecutor()的优点,java,multithreading,Java,Multithreading,使用的优势是什么 Executors.newSingleThreadExecutor().submit(job); 其中job是Runnable类的一个实例。区别与new Thread(job).start()和job.run()相同。提交作业以执行时,作业将在执行器的一个可用线程中运行。调用job.run()就像任何其他方法调用一样,它不是在单独的线程中运行,而是在调用线程上运行。优点之一是Executors.newSingleThreadExecutor重用线程实例来加速其他作业的启动。

使用的优势是什么

Executors.newSingleThreadExecutor().submit(job);


其中
job
Runnable
类的一个实例。

区别与
new Thread(job).start()
job.run()
相同。提交作业以执行时,作业将在执行器的一个可用线程中运行。调用
job.run()
就像任何其他方法调用一样,它不是在单独的线程中运行,而是在调用线程上运行。

优点之一是Executors.newSingleThreadExecutor重用线程实例来加速其他作业的启动。

按字面意思写

Executors.newSingleThreadExecutor().submit(job);
这是毫无意义的:这只是错误的做法

new Thread(job).start();
与后者相反,前者将保持线程挂起,直到执行器服务完成

当您将Executor服务作为实例/类变量保留,并将其重新用于许多提交的任务时,使用Executor服务的优势就出现了。执行器服务完成后必须正确关闭


更一般地说,将任务提交到executor服务和仅运行任务之间的区别在于实现的并发性。这是否会带来任何好处,与提交的作业密切相关:它也可能是无用的,甚至会被破坏(导致数据争用、死锁等)。

为什么要使用它?是否使用谷歌搜索过它?但如果不重用执行者,就不会发生这种情况。如果执行整行
Executors.newSingleThreadExecutor().submit(作业)调用是没有意义的。
new Thread(job).start();