ExecutorService

關於ExecutorService的介紹可以參考

https://blog.csdn.net/suifeng3051/article/details/49443835

 

簡單來說這個類可以提供線程來做一些工作,可以說是對thread做了封裝管理吧。。。用起來還是挺方便的。。。

 

創建線程池的方法

該類爲工廠類,通過調用不同的create函數來創建不同類型的線程池,如下是提供的幾種類型的線程池

 

  • newCachedThreadPool 創建一個可緩存線程池,如果線程池長度超過處理需要,可靈活回收空閒線程,若無可回收,則新建線程。
  • newFixedThreadPool 創建一個定長線程池,可控制線程最大併發數,超出的線程會在隊列中等待。
  • newScheduledThreadPool 創建一個定長線程池,支持定時及週期性任務執行。
  • newSingleThreadExecutor 創建一個單線程化的線程池,它只會用唯一的工作線程來執行任務,保證所有任務按照指定順序(FIFO, LIFO, 優先級)執行。

 

啓動線程的方法:

調用方法支持如下幾種

  • execute(Runnable) 
  • submit(Runnable) 
  • submit(Callable) 
  • invokeAny(...) 
  • invokeAll(...)

 

​submit(Runnable)​和​execute(Runnable)​區別是前者可以返回一個Future對象,通過返回的Future對象,我們可以檢查提交的任務是否執行完畢。

結束線程的方法

  • ExecutorService.shutdown:等待線程中的任務運行完成時再結束線程
  • ExecutorService.shutdownNow:立刻執行所有線程中正在執行的任務

 

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