使用
的优势是什么?Executors.newSingleThreadExecutor().submit(job);
比
job.run();
其中job
是Runnable
类的实例。
答案 0 :(得分:13)
字面意思
Executors.newSingleThreadExecutor().submit(job);
毫无意义:这只是错误的做法
new Thread(job).start();
与后者相反,前者将保留线程,直到Executor Service完成。
使用Executor Service的优势是在将其作为实例/类变量保留并将其重用于许多提交的任务时发生的。完成后,执行人服务必须正确shutdown
。
更一般地说,将任务提交给执行程序服务和仅运行任务之间的区别在于实现的并发性。这是否会产生任何优势对于提交的作业具有高度特异性:它可能也是无用的甚至是破坏的(导致数据争用,死锁等)。
答案 1 :(得分:3)
差异与new Thread(job).start()
和job.run()
相同。提交作业以供执行时,作业将在执行程序的一个可用线程中运行。调用job.run()
就像任何其他方法调用一样,它不在单独的线程中运行,而是在调用线程上运行。
答案 2 :(得分:1)
其中一个优点是Executors.newSingleThreadExecutor重用Thread实例来加速其他作业的启动。