java線程池類型
1. 詳談java幾種線程池類型介紹及使用方法
線程池作用就是限制系統中執行線程的數量。
根據系統的環境情況,可以自動或手動設置線程數量,達到運行的最佳效果;少了浪費了系統資源,多了造成系統擁擠效率不高。用線程池控制線程數量,其他線程 排隊等候。一個任務執行完畢,再從隊列的中取最前面的任務開始執行。若隊列中沒有等待進程,線程池的這一資源處於等待。當一個新任務需要運行時,如果線程 池中有等待的工作線程,就可以開始運行了;否則進入等待隊列。
Java裡面線程池的頂級介面是Executor,但是嚴格意義上講Executor並不是一個線程池,而只是一個執行線程的工具。真正的線程池介面是ExecutorService。ThreadPoolExecutor是Executors類的底層實現。
2. java幾種線程池的應用比較
1newCachedThreadPool
創建一個可緩存線程池,如果線程池長度超過處理需要,可靈活回收空閑線程,若無可回收,則新建線程。
這種類型的線程池特點是:
工作線程的創建數量幾乎沒有限制(其實也有限制的,數目為Interger. MAX_VALUE),這樣可靈活的往線程池中添加線程。
如果長時間沒有往線程池中提交任務,即如果工作線程空閑了指定的時間(默認為1分鍾),則該工作線程將自動終止。終止後,如果你又提交了新的任務,則線程池重新創建一個工作線程。
在使用CachedThreadPool時,一定要注意控制任務的數量,否則,由於大量線程同時運行,很有會造成系統癱瘓。
2newFixedThreadPool
創建一個指定工作線程數量的線程池。每當提交一個任務就創建一個工作線程,如果工作線程數量達到線程池初始的最大數,則將提交的任務存入到池隊列中。
FixedThreadPool是一個典型且優秀的線程池,它具有線程池提高程序效率和節省創建線程時所耗的開銷的優點。但是,在線程池空閑時,即線程池中沒有可運行任務時,它不會釋放工作線程,還會佔用一定的系統資源。
3newSingleThreadExecutor
創建一個單線程化的Executor,即只創建唯一的工作者線程來執行任務,它只會用唯一的工作線程來執行任務,保證所有任務按照指定順序(FIFO, LIFO,優先順序)執行。如果這個線程異常結束,會有另一個取代它,保證順序執行。單工作線程最大的特點是可保證順序地執行各個任務,並且在任意給定的時間不會有多個線程是活動的。
4newScheleThreadPool
創建一個定長的線程池,而且支持定時的以及周期性的任務執行,支持定時及周期性任務執行。
3. java線程池原理
線程池把先前創建的線程重用於當前任務。這就解決了需要太多線程的問題,因此內存不足不是一個選擇。您甚至可以把線程池視為回收系統。它不止消除了用盡內存的選項,而且還使應用程序非常快速地響應,原因是當請求到達時已經存在一個線程。
工作流程步驟:
創建要執行的任務
使用執行程序創建執行程序池
把任務傳遞給執行程序池
關閉執行程序池
4. 【Java基礎】線程池的原理是什麼
什麼是線程池?
總歸為:池化技術 ---》資料庫連接池 緩存架構 緩存池 線程池 內存池,連接池,這種思想演變成緩存架構技術---> JDK設計思想有千絲萬縷的聯系
首先我們從最核心的ThreadPoolExecutor類中的方法講起,然後再講述它的實現原理,接著給出了它的使用示例,最後討論了一下如何合理配置線程池的大小。
Java 中的 ThreadPoolExecutor 類
java.uitl.concurrent.ThreadPoolExecutor 類是線程池中最核心的一個類,因此如果要透徹地了解Java 中的線程池,必須先了解這個類。下面我們來看一下 ThreadPoolExecutor 類的具體實現源碼。
在 ThreadPoolExecutor 類中提供了四個構造方法:
5. java 什麼是線程池及為什麼要使用線程池
創建線程要花費昂貴的資源和時間,如果任務來了才創建線程那麼響應時間會變長,而且一個進程能創建的線程數有限。為了避免這些問題,在程序啟動的時候就創建若干線程來響應處理,它們被稱為線程池,裡面的線程叫工作線程。從JDK1.5開始,Java
API提供了Executor框架讓你可以創建不同的線程池。比如單線程池,每次處理一個任務;數目固定的線程池或者是緩存線程池(一個適合很多生存期短的任務的程序的可擴展線程池)。
6. java創建線程池有哪些
ava通過Executors提供四種線程池,分別為:
newCachedThreadPool創建一個可緩存線程池,如果線程池長度超過處理需要,可靈活回收空閑線程,若無可回收,則新建線程。
newFixedThreadPool
創建一個定長線程池,可控制線程最大並發數,超出的線程會在隊列中等待。
newScheledThreadPool
創建一個定長線程池,支持定時及周期性任務執行。
newSingleThreadExecutor
創建一個單線程化的線程池,它只會用唯一的工作線程來執行任務,保證所有任務按照指定順序(FIFO,
LIFO,
優先順序)執行。
7. java的四種線程池哪個比較好
無法簡單的說那個線程好,應該說適合用那個線程,這里有比較詳細的介紹java的四種線程池,可以根據需求使用線程池。
http://blog.csdn.net/u011974987/article/details/51027795
8. Java有多少種線程池
Java通過Executors提供四種線程池,分別為:
newCachedThreadPool創建一個可緩存線程池,如果線程池長度超過處理需要,可靈活回收空閑線程,若無可回收,則新建線程
newFixedThreadPool創建一個定長線程池,可控制線程最大並發數,超出的線程會在隊列中等待
。newScheledThreadPool創建一個定長線程池,支持定時和周期性任務執行
newSingleThreadExecutor創建一個單線程化的線程池,它只會用唯一的工作線程來執行任務,保證所有任務按照指定順序(FIFO,LIFO,優先順序)執行。
9. JAVA有幾種線程池類
java.util.concurrent.Executors提供了一個 java.util.concurrent.Executor介面的實現用於創建線程池
①newSingleThreadExecutor
單個線程的線程池,即線程池中每次只有一個線程工作,單線程串列執行任務
②newFixedThreadExecutor(n)
固定數量的線程池,沒提交一個任務就是一個線程,直到達到線程池的最大數量,然後後面進入等待隊列直到前面的任務完成才繼續執行
③newCacheThreadExecutor(推薦使用)
可緩存線程池,當線程池大小超過了處理任務所需的線程,那麼就會回收部分空閑(一般是60秒無執行)的線程,當有任務來時,又智能的添加新線程來執行。
④newScheleThreadExecutor
大小無限制的線程池,支持定時和周期性的執行線程