區別:
execute(Runnable command):提交任務沒有返回值,
submit(Callable< T > task) :提交任務會返回Future對象,通過該對象的get方法可以獲取返回值。
線程異常時:
execute會直接打印異常信息,但不會給其他線程造成影響。
submit會將異常信息存儲在返回future對象裏,只有get的時候,纔會出現異常信息。
舉個栗子:
以上可見, execute()執行出現異常時,不會給其他線程造成影響
以上可見, submit()執行出現異常時,異常信息存儲在返回future對象裏,只有get的時候,纔會出現異常信息,並且異常會阻塞線程。
關於線程池的相關知識可查看線程池ThreadPoolExecutor及原理