400-650-7353
您所在的位置:首頁 > IT干貨資料 > java > 【Java基礎知識】什么是線程池

【Java基礎知識】什么是線程池

  • 發(fā)布: java培訓
  • 來源:Java培訓干貨資料
  • 2020-03-25 17:42:01
  • 閱讀()
  • 分享
  • 手機端入口

多線程是為了能夠讓計算機資源合理的分配,對于處理不同的任務創(chuàng)建不同的線程進行處理,但是計算機創(chuàng)建一個線程或者銷毀一個線程所花費的也是比較昂貴的,有時候需要同時處理的事情比較多,就需要我們頻繁的進行線程的創(chuàng)建和銷毀,這樣花費的時間也是比較多的。為了解決這一問題,我們就可以引用線程池的概念。

所謂線程池就是將線程集中管理起來,當需要線程的時候,可以從線程池中獲取空閑的線程,這樣可以減少線程的頻繁創(chuàng)建與銷毀,節(jié)省很大的時間和減少很多不必要的操作。

在java中提供了ThreadPoolExecutor類來進行線程的管理,這個類繼承于AbstractExecutorService,而AbstractExecutorService實現(xiàn)了ExecutorService接口,我們可以使用ThreadPoolExecutor來進行線程池的創(chuàng)建。

Java線程池

在ThreadPoolExecutor的構造方法中,有多個參數(shù),可以配置不同的參數(shù)來進行優(yōu)化。這個類的源碼構造方法為:

public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler)其中每個參數(shù)代表的意義分別為

corePoolSize : 線程池中的核心線程數(shù)量,當線程池中當前的線程數(shù)小于這個配置的時候,如果有一個新的任務到來,即使線程池中還存在空閑狀態(tài)的線程,程序也會繼續(xù)創(chuàng)建一個新的線程放進線程池當中

maximumPoolSize: 線程池中的線程最大數(shù)量

keepAliveTime:當線程池中的線程數(shù)量大于配置的核心線程數(shù)量(corePoolSize)的時候,如果當前有空閑的線程,則當這個空閑線程可以存在的時間,如果在keepAliveTime這個時間點內沒有新的任務使用這個線程,那么這個線程將會結束,核心線程不會結束,但是如果配置了allowCoreThreadTimeOut = true,則當空閑時間超過keepAliveTime之后,線程也會被結束調,默認allowCoreThreadTimeOut = false,即表示默認情況下,核心線程會一直存在于線程池當中。

unit : 空閑線程保持連接時間(keepAliveTime)的時間單位

workQueue:阻塞的任務隊列,用來保存等待需要執(zhí)行的任務。

threadFactory :線程工廠,可以根據(jù)自己的需求去創(chuàng)建線程的對象,設置線程的名稱,優(yōu)先級等屬性信息。

handler:當線程池中存在的線程數(shù)超過設置的最大值之后,新的任務就會被拒絕,可以自己定義一個拒絕的策略,當新任務被拒絕之后,就會使用hander方法進行處理。

在java中也提供了Executors工具類,在這個工具類中提供了多個創(chuàng)建線程池的靜態(tài)方法,其中包含newCachedThreadPool、newFixedThreadPool、newScheduledThreadPool、newSingleThreadExecutor等。但是他們每個方法都是創(chuàng)建了ThreadPoolExecutor對象,不同的是,每個對象的初始 參數(shù)值不一樣;

 

文章“【Java基礎知識】什么是線程池”已幫助

>>本文地址:http://liujunjsxg.cn/zhuanye/2020/48531.html

THE END  

聲明:本站稿件版權均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉載。

1 您的年齡

2 您的學歷

3 您更想做哪個方向的工作?

獲取測試結果
  • 大前端大前端
  • 大數(shù)據(jù)大數(shù)據(jù)
  • 互聯(lián)網(wǎng)營銷互聯(lián)網(wǎng)營銷
  • JavaJava
  • Linux云計算Linux
  • Python+人工智能Python
  • 嵌入式物聯(lián)網(wǎng)嵌入式
  • 全域電商運營全域電商運營
  • 軟件測試軟件測試
  • 室內設計室內設計
  • 平面設計平面設計
  • 電商設計電商設計
  • 網(wǎng)頁設計網(wǎng)頁設計
  • 全鏈路UI/UE設計UI設計
  • VR/AR游戲開發(fā)VR/AR
  • 網(wǎng)絡安全網(wǎng)絡安全
  • 新媒體與短視頻運營新媒體
  • 直播帶貨直播帶貨
  • 智能機器人軟件開發(fā)智能機器人
 

快速通道fast track

近期開班時間TIME