submit()和execute()的區別 有以下三個方面
1、execute() 參數 Runnable ;submit() 參數 (Runnable) 或 (Runnable 和 結果 T) 或 (Callable)
2、execute() 沒有返回值;而 submit() 有返回值
3、submit() 的返回值 Future 調用get方法時,可以捕獲處理異常
詳細說明
submit:
execute:
可以看出:
(1)可以接受的任務類型
execute只能接受Runnable類型的任務
submit不管是Runnable還是Callable類型的任務都可以接受,但是Runnable返回值均爲void,所以使用Future的get()獲得的還是null
(2)返回值
由Callable和Runnable的區別可知:
execute沒有返回值
submit有返回值,所以需要返回值的時候必須使用submit
(3)異常
1.execute中拋出異常
execute中的是Runnable接口的實現,所以只能使用try、catch來捕獲CheckedException,通過實現UncaughtExceptionHande接口處理UncheckedException, 即和普通線程的處理方式完全一致
2.submit中拋出異常
不管提交的是Runnable還是Callable類型的任務,如果不對返回值Future調用get()方法,都會吃掉異常