線程池的execute()與submit()的使用區別以及異常情況

區別:
     execute(Runnable command):提交任務沒有返回值,
     submit(Callable< T > task)     :提交任務會返回Future對象,通過該對象的get方法可以獲取返回值。
     線程異常時:
          execute會直接打印異常信息,但不會給其他線程造成影響。
          submit會將異常信息存儲在返回future對象裏,只有get的時候,纔會出現異常信息。

舉個栗子:

在這裏插入圖片描述
     以上可見, execute()執行出現異常時,不會給其他線程造成影響


在這裏插入圖片描述
在這裏插入圖片描述
     以上可見, submit()執行出現異常時,異常信息存儲在返回future對象裏,只有get的時候,纔會出現異常信息,並且異常會阻塞線程。

     關於線程池的相關知識可查看線程池ThreadPoolExecutor及原理

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