Java多線程(28)——JUC——線程池excutors系列(3)——ThreadPoolExcutor(2)——從源碼去剖析線程池的原理

1.線程池的運行狀態

 

2.

 

 

 

 

 

execute和submit方法有什麼區別?

  • 1.execute是Executor制定的規範,submit是ExecutorService制定的規範
  • 2.execute只有接收Runnable參數的一種實現,submit重載的方法,既有接收Runnable參數的實現,也有接收Callable參數的實現
  • 3.execute() 方法用於提交不需要返回值的任務,所以無法判斷任務是否被線程池執行成功與否;
  • 4.submit()方法用於提交需要返回值的任務。線程池會返回一個future類型的對象,通過這個future對象可以判斷任務是否執行成功,並且可以通過future的get()方法來獲取返回值,get()方法會阻塞當前線程直到任務完成,而使用 get(long timeout,TimeUnit unit)方法則會阻塞當前線程一段時間後立即返回,這時候有可能任務沒有執行完。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章