Java線程池總結--submit()和execute()的區別

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()方法,都會吃掉異常

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章