Java中Executor接口用法總結(jié)
本文實例講述了Java中Executor接口用法。分享給大家供大家參考。具體如下:
1.Java中Executor接口的定義
public interface Executor { void execute(Runnable command); }
2.Executors以下靜態(tài)工廠方法創(chuàng)建一個線程池:
a) newFixedThreadPool:創(chuàng)建一個定長的線程池。達到最大線程數(shù)后,線程數(shù)不再增長。
如果一個線程由于非預期Exception而結(jié)束,線程池會補充一個新的線程。
b) newCachedThreadPool:創(chuàng)建一個可緩存的線程池。當池長度超過處理需求時,可以回收空閑的線程。
c) newSingleThreadPool:創(chuàng)建一個單線程executor。
d) newScheduledThreadPool:創(chuàng)建一個定長的線程池,而且支持定時的以及周期性的任務執(zhí)行。
類似于Timer。但是,Timer是基于絕對時間,對系統(tǒng)時鐘的改變是敏感的,而ScheduledThreadPoolExecutor只支持相對時間。
3.對比Timer類的應用總結(jié)
1) Timer是創(chuàng)建唯一的線程來執(zhí)行所有的timer任務。如果一個任務超時了,會導致其他的TimerTask時間準確性出問題。
2) 如果TimerTask拋出uncheck 異常,Timer將會產(chǎn)生無法預料的行為。因此,ScheduledThreadPoolExecutor可以完全代替Timer。
3) 為了解決執(zhí)行服務的生命周期問題,ExecutorService接口擴展了Executor。線程池將包括3個狀態(tài):running,shutting down,terminated。
4.Callable和Future
因為Runnable沒有返回值,并且不能拋出checked異常,所以Callable是更佳的抽象。(Callable<Void>表示無返回值的任務)。
Future描述了任務的生命周期,并提供了相關的方法來獲取任務的結(jié)果、取消任務以及檢查任務完成或則是否取消。
5.CompletionService整合了Executor和BlockingQueue的功能。
其take和poll可以阻塞的獲取完成的任務。
希望本文所述對大家的java程序設計有所幫助。
相關文章
Java動態(tài)字節(jié)碼注入技術(shù)的實現(xiàn)
Java動態(tài)字節(jié)碼注入技術(shù)是一種在運行時修改Java字節(jié)碼的技術(shù),本文主要介紹了Java動態(tài)字節(jié)碼注入技術(shù)的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2023-08-08SpringBoot使用AOP實現(xiàn)日志記錄功能詳解
這篇文章主要為大家介紹了SpringBoot使用AOP實現(xiàn)日志記錄功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07java對象轉(zhuǎn)化成String類型的四種方法小結(jié)
在java項目的實際開發(fā)和應用中,常常需要用到將對象轉(zhuǎn)為String這一基本功能。本文就詳細的介紹幾種方法,感興趣的可以了解一下2021-08-08springcloud如何使用dubbo開發(fā)rpc服務及調(diào)用
這篇文章主要介紹了springcloud如何使用dubbo開發(fā)rpc服務及調(diào)用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-01-01spring多數(shù)據(jù)源配置實現(xiàn)方法實例分析
這篇文章主要介紹了spring多數(shù)據(jù)源配置實現(xiàn)方法,結(jié)合實例形式分析了spring多數(shù)據(jù)源配置相關操作技巧與使用注意事項,需要的朋友可以參考下2019-12-12