java四種線程池 java什么是線程池及為什么要使用線程池?
java什么是線程池及為什么要使用線程池?創(chuàng)建線程需要昂貴的資源和時間。如果一個任務(wù)來創(chuàng)建一個線程,響應(yīng)時間會更長,并且一個進程可以創(chuàng)建的線程數(shù)是有限的。為了避免這些問題,當程序啟動時,會創(chuàng)建幾個線程
java什么是線程池及為什么要使用線程池?
創(chuàng)建線程需要昂貴的資源和時間。如果一個任務(wù)來創(chuàng)建一個線程,響應(yīng)時間會更長,并且一個進程可以創(chuàng)建的線程數(shù)是有限的。為了避免這些問題,當程序啟動時,會創(chuàng)建幾個線程來響應(yīng)處理。它們稱為線程池,其中的線程稱為工作線程。從JDK1.5開始,javaapi提供了一個executor框架,允許您創(chuàng)建不同的線程池。例如,單個線程池,一次處理一個任務(wù);固定數(shù)量的線程池或緩存線程池(適用于許多短期任務(wù)的可擴展線程池)。
為什么要使用線程池?
1. 減少創(chuàng)建和銷毀線程的數(shù)量,每個工作線程都可以重用,并且可以執(zhí)行多個任務(wù)。
2. 您可以根據(jù)系統(tǒng)的承載能力來調(diào)整線程池中的工作線線程數(shù),以防止服務(wù)器因為消耗太多內(nèi)存而疲憊不堪(每個線程大約需要1MB內(nèi)存,打開的線程越多,消耗的內(nèi)存就越多,最后服務(wù)器崩潰)。
Java線程池的頂層接口是executor,但嚴格來說,executor不是線程池,而是執(zhí)行線程的工具。真正的線程池接口是executorservice。