2016-10-05 55 views
0

我是否理解submitexecute之間的區別就像是asyncsync調用?在第二種情況下,調用者將被停止直到runnable完成?ExecutorService提交vs執行

public static ExecutorService serialQueue = Executors.newFixedThreadPool(1); 

我使用ExecutorService作爲串行隊列,一次只能運行一個任務。

回答

2

submit()返回Future,而​​不返回任何內容。它們看起來都是異步的,但通過submit(),您可以在返回的Future上調用future.get(),以阻止提交的任務實際完成。此外,如果該任務具有您想獲得的結果值,則可以使用submit()Callable而不是Runnablefuture.get()調用將爲您提供該結果。

+0

要添加,'execute'是'Executor'接口的一部分,而'submit'是'ExecutorService'接口的一部分。返回的'Future'還允許您取消請求,因爲'execute'只會一直持續到它自己結束。 – DeeV