- 此问题在此处已有答案**:
The difference between Executors.newSingleThreadExecutor().execute(command) and new Thread(command).start();(6个答案)
九年前就关门了。
使用的优势是什么
Executors.newSingleThreadExecutor().submit(job);
比
job.run();
其中job
是Runnable
类的示例。
The difference between Executors.newSingleThreadExecutor().execute(command) and new Thread(command).start();(6个答案)
九年前就关门了。
使用的优势是什么
Executors.newSingleThreadExecutor().submit(job);
比
job.run();
其中job
是Runnable
类的示例。
3条答案
按热度按时间rbpvctlc1#
照字面写
毫无意义:只是用错误的方式
与后者相反,前者会让线程挂起,直到Executor Service完成。
使用Executor服务的好处是当你把它作为一个示例/类变量来使用,并且在很多提交的任务中重用它。当你使用完它的时候,Executor服务必须是正确的
shutdown
。更一般地说,将任务提交给执行器服务和只运行任务之间的区别在于所实现的并发性。这是否会带来任何优势,取决于所提交的作业:它也可能是无用的或者甚至是损坏的(导致数据竞争、死锁等)。
jv4diomz2#
区别与
new Thread(job).start()
和job.run()
相同。当您提交要执行的作业时,作业将在执行器的一个可用线程中运行。调用job.run()
与任何其他方法调用一样,不是在单独的线程中运行,而是在调用线程上运行。t5fffqht3#
优点之一是Executors.newSingleThreadExecutor重用Thread示例来加快其他作业的启动。