2013-09-25 91 views

回答

2

new Thread(job).start()job.run()的區別相同。當您提交作業執行時,作業將在執行程序的一個可用線程中運行。調用job.run()就像其他方法調用一樣,它不會在單獨的線程中運行,而是在調用線程中運行。

0

其中一個優點是Executors.newSingleThreadExecutor重用Thread實例來加速其他作業的啓動。

6

寫作字面上

Executors.newSingleThreadExecutor().submit(job); 

是沒有意義的:它只是錯誤的方式做

new Thread(job).start(); 

由於相對於後者,前者將離開不絕如縷,直到執行人服務敲定。

優勢使用一個Executor服務來,當你保持它周圍的一個實例/類變量,然後重新使用許多提交的任務。執行完畢後,Executor服務必須正確shutdown

更一般地說,向執行程序服務提交任務和僅運行任務之間的區別在於實現的併發性。是否會導致的優勢對提交的作業非常具體:它可能也是無用的甚至是破碎的(導致數據競爭,死鎖等)。