Java 線程池的使用好處

使用線程池的好處:緩存

1.減小在建立和銷燬線程上所花的時間以及系統資源的開銷
2.如不使用線程池,有可能形成系統建立大量線程而致使消耗完系統內存線程

如下是Java自帶的幾種線程池:隊列

一、newFixedThreadPool 建立一個指定工做線程數量的線程池。內存

每當提交一個任務就建立一個工做線程,若是工做線程數量達到線程池初始的最大數,則將提交的任務存入到池隊列中。資源

二、newCachedThreadPool 建立一個可緩存的線程池。效率

這種類型的線程池特色是:線程池

1).工做線程的建立數量幾乎沒有限制(其實也有限制的,數目爲Interger. MAX_VALUE), 這樣可靈活的往線程池中添加線程。程序

2).若是長時間沒有往線程池中提交任務,即若是工做線程空閒了指定的時間(默認爲1分鐘),則該工做線程將自動終止。終止後,若是你又提交了新的任務,則線程池從新建立一個工做線程。im

三、newSingleThreadExecutor 建立一個單線程化的Executor,即只建立惟一的工做者線程來執行任務,若是這個線程異常結束,會有另外一個取代它,保證順序執行(我以爲這點是它的特點)。總結

單工做線程最大的特色是可保證順序地執行各個任務,而且在任意給定的時間不會有多個線程是活動的 。

四、newScheduleThreadPool 建立一個定長的線程池,並且支持定時的以及週期性的任務執行,相似於Timer。

總結:

一.FixedThreadPool是一個典型且優秀的線程池,它具備線程池提升程序效率和節省建立線程時所耗的開銷的優勢。但在線程池空閒時,即線程池中沒有可運行任務時,它不會釋放工做線程,還會佔用必定的系統資源。

二.CachedThreadPool的特色就是在線程池空閒時,即線程池中沒有可運行任務時,它會釋放工做線程,從而釋放工做線程所佔用的資源。可是,但當出現新任務時,又要建立一新的工做線程,又要必定的系統開銷。而且,在使用CachedThreadPool時,必定要注意控制任務的數量,不然,因爲大量線程同時運行,頗有會形成系統癱瘓。  

相關文章
相關標籤/搜索