A. java多線程為什麼使用線程池
1:提高效率 創建好一定數量的線程放在池中,等需要使用的時候就從池中拿一個,這要比需要的時候創建一個線程對象要快的多。
2:方便管理 可以編寫線程池管理代碼對池中的線程統一進行管理,比如說系統啟動時由該程序創建100個線程,每當有請求的時候,就分配一個線程去工作, 如果剛好並發有101個請求,那多出的這一個請求可以排隊等候,避免因無休止的創建線程導致系統崩潰
B. java 線程組和線程池的作用
一個線程的周期分為:創建、運行、銷毀三個階段。處理一個任務時,首先創建一個任務線程,然後執行任務,完了,銷毀線程。而線程處於運行狀態的時候,才是真的在處理我們交給它的任務,這個階段才是有效運行時間。所以,我們希望花在創建和銷毀線程的資源越少越好。如果不銷毀線程,而這個線程又不能被其他的任務調用,那麼就會出現資源的浪費。為了提高效率,減少創建和銷毀線程帶來時間和空間上的浪費,出現了線程池技術。這種技術是在開始就創建一定量的線程,批量處理一類任務,等待任務的到來。任務執行完畢後,線程又可以執行其他的任務。等不再需要線程的時候,就銷毀。這樣就省去了頻繁創建和銷毀線程的麻煩。
C. 詳談Java幾種線程池類型介紹及使用方法
線程池作用就是限制系統中執行線程的數量。
根據系統的環境情況,可以自動或手動設置線程數量,達到運行的最佳效果;少了浪費了系統資源,多了造成系統擁擠效率不高。用線程池控制線程數量,其他線程 排隊等候。一個任務執行完畢,再從隊列的中取最前面的任務開始執行。若隊列中沒有等待進程,線程池的這一資源處於等待。當一個新任務需要運行時,如果線程 池中有等待的工作線程,就可以開始運行了;否則進入等待隊列。
Java裡面線程池的頂級介面是Executor,但是嚴格意義上講Executor並不是一個線程池,而只是一個執行線程的工具。真正的線程池介面是ExecutorService。ThreadPoolExecutor是Executors類的底層實現。
D. java 什麼是線程池及為什麼要使用線程池
創建線程要花費昂貴的資源和時間,如果任務來了才創建線程那麼響應時間會變長,而且一個進程能創建的線程數有限。為了避免這些問題,在程序啟動的時候就創建若干線程來響應處理,它們被稱為線程池,裡面的線程叫工作線程。從JDK1.5開始,Java
API提供了Executor框架讓你可以創建不同的線程池。比如單線程池,每次處理一個任務;數目固定的線程池或者是緩存線程池(一個適合很多生存期短的任務的程序的可擴展線程池)。
E. 由淺入深理解Java線程池及線程池的如何使用
重要的特徵也就是最大程度利用線程.
首先,創建線程本身需要額外(相對於執行任務而必須的資源)的開銷.
作業系統在每創建一個線程時,至少需要創建以下資源:
(1) 線程內核對象:用於對線程上下文的管理.
(2) 用戶模式執行棧.
(3) 內核模式執行棧.
這些資源被線程佔有後作業系統和用戶都無法使用.
相反的過程,銷毀線程需要回收資源,也需要一定開銷.
其次,過多的線程將導致過度的切換.線程切換帶來的性能更是不可估量.系統完成線程切換要經過以下過程:
(1) 從用戶模式切換到內核模式.
(2) 將CPU寄存器的值保存到當前線程的內核對象中.
(3)打開一個自旋鎖,根據調度策略決定下一個要執行的線程.釋放自旋鎖,如果要執行的線程不是同一進
程中的線程,還需要切換虛擬內存等進程環境.
(4) 將要執行的線程的內核對象的值寫到CPU寄存器中.
(5) 切換到用戶模式執行新線程的執行邏輯.
所以線程池的目的就是為了減少創建和切換線程的額外開銷,利用已經的線程多次循環執行多個任務從而提
高系統的處理能力.
F. 【Java基礎】線程池的原理是什麼
什麼是線程池?
總歸為:池化技術 ---》資料庫連接池 緩存架構 緩存池 線程池 內存池,連接池,這種思想演變成緩存架構技術---> JDK設計思想有千絲萬縷的聯系
首先我們從最核心的ThreadPoolExecutor類中的方法講起,然後再講述它的實現原理,接著給出了它的使用示例,最後討論了一下如何合理配置線程池的大小。
Java 中的 ThreadPoolExecutor 類
java.uitl.concurrent.ThreadPoolExecutor 類是線程池中最核心的一個類,因此如果要透徹地了解Java 中的線程池,必須先了解這個類。下面我們來看一下 ThreadPoolExecutor 類的具體實現源碼。
在 ThreadPoolExecutor 類中提供了四個構造方法:

G. java線程池的原理是什麼在什麼地方需要線程池
頻繁創建線程的地方, 比如每秒創建/退出>10個線程.
H. java線程池的理解
線程池顧名思義是一個裝著"線程"的池子,,它包含了很多已經啟動好的並且處於睡眠狀態的線程.當你有請求時,就會直接使用池子裡面的線程而不用去創建.對於請求量很少的時候看起來沒多少作用...但是當系統使用人數多了..請求數量很多的時候就會為系統節約大量的資源,讓系統不去忙於線程的創建和銷毀,,,而讓系統更好的完成他的功能.
I. java線程池在什麼時候用
線程池主要作用就是減少線程創建的開銷,當線程很多時可以使用。
當然,線程池也不只是這一個作用,具體的建議網路看看,講得比較全面。
J. 什麼是java線程池
多線程是為了能夠讓計算機資源合理的分配,對於處理不同的任務創建不同的線程進行處理,但是計算機創建一個線程或者銷毀一個線程所花費的也是比較昂貴的,有時候需要同時處理的事情比較多,就需要我們頻繁的進行線程的創建和銷毀,這樣花費的時間也是比較多的。為了解決這一問題,我們就可以引用線程池的概念。
所謂線程池就是將線程集中管理起來,當需要線程的時候,可以從線程池中獲取空閑的線程,這樣可以減少線程的頻繁創建與銷毀,節省很大的時間和減少很多不必要的操作。
在java中提供了ThreadPoolExecutor類來進行線程的管理,這個類繼承於AbstractExecutorService,而AbstractExecutorService實現了ExecutorService介面,我們可以使用ThreadPoolExecutor來進行線程池的創建。
在ThreadPoolExecutor的構造方法中,有多個參數,可以配置不同的參數來進行優化。這個類的源碼構造方法為:
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler)其中每個參數代表的意義分別為
corePoolSize : 線程池中的核心線程數量,當線程池中當前的線程數小於這個配置的時候,如果有一個新的任務到來,即使線程池中還存在空閑狀態的線程,程序也會繼續創建一個新的線程放進線程池當中
maximumPoolSize: 線程池中的線程最大數量
keepAliveTime:當線程池中的線程數量大於配置的核心線程數量(corePoolSize)的時候,如果當前有空閑的線程,則當這個空閑線程可以存在的時間,如果在keepAliveTime這個時間點內沒有新的任務使用這個線程,那麼這個線程將會結束,核心線程不會結束,但是如果配置了allowCoreThreadTimeOut = true,則當空閑時間超過keepAliveTime之後,線程也會被結束調,默認allowCoreThreadTimeOut = false,即表示默認情況下,核心線程會一直存在於線程池當中。
unit : 空閑線程保持連接時間(keepAliveTime)的時間單位
workQueue:阻塞的任務隊列,用來保存等待需要執行的任務。
threadFactory :線程工廠,可以根據自己的需求去創建線程的對象,設置線程的名稱,優先順序等屬性信息。
handler:當線程池中存在的線程數超過設置的最大值之後,新的任務就會被拒絕,可以自己定義一個拒絕的策略,當新任務被拒絕之後,就會使用hander方法進行處理。
在java中也提供了Executors工具類,在這個工具類中提供了多個創建線程池的靜態方法,其中包含newCachedThreadPool、newFixedThreadPool、newScheledThreadPool、newSingleThreadExecutor等。但是他們每個方法都是創建了ThreadPoolExecutor對象,不同的是,每個對象的初始 參數值不一樣;