摘要:首先我們來了解下線程池的基本原理第一步便是我們將我們的任務提交給線程池如果線程池中線程數小于核心線程數,則創建一個新的線程來執行該任務。
Java開發的同學肯定使用過多線程,使用多線程那就肯定會用到線程池。而且個人認為線程池也是各大互聯網公司在面試的時候必問的一個知識點。因此作為開發人員,必須了解線程池的原理以及具體參數的含義。
首先我們來了解下線程池的基本原理
第一步便是我們將我們的任務提交給線程池
如果線程池中線程數小于核心線程數,則創建一個新的線程來執行該任務。否則進入步驟3
提交任務時,線程池中的空閑的線程數為0并且線程數等于核心線程數,則觀察線程池中的任務隊列是否已滿,如果未滿則將任務添加到任務隊列,否則進入步驟4
如果最大線程數大于核心線程數,并且總線程數小于最大線程數,則創建一個新的線程來執行該任務。否則進入步驟5
當任務隊列已滿時,就執行拒絕策略(后續詳解拒絕策略)
在大致了解了線程池的基本工作原理之后,我們再細看下線程池核心類ThreadPoolExecutor
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueueworkQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler) { //省略具體的代碼內容 }
參數說明
參數 | 說明 |
---|---|
corePoolSize | 核心線程數 |
maximumPoolSize | 最大線程數,一般大于等于核心線程數 |
keepAliveTime | 線程存活時間(針對最大線程數大于核心線程數時,非核心線程) |
unit | 存活時間單位,和線程存活時間配套使用 |
workQueue | 任務隊列 |
threadFactory | 創建線程的工程 |
handler | 拒絕策略 |
拒絕策略有以下幾種
拒絕策略 | 說明 |
---|---|
AbortPolicy | 為java線程池默認的阻塞策略,不執行此任務,而且直接拋出一個運行時異常。 |
DiscardOldestPolicy | 丟棄隊列最前面的任務,然后重新嘗試執行任務(重復此過程) |
DiscardPolicy | 也是丟棄任務,但是不拋出異常 |
CallerRunsPolicy | 由調度線程處理該任務 |
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/74674.html
摘要:當活動線程核心線程非核心線程達到這個數值后,后續任務將會根據來進行拒絕策略處理。線程池工作原則當線程池中線程數量小于則創建線程,并處理請求。當線程池中的數量等于最大線程數時默默丟棄不能執行的新加任務,不報任何異常。 spring-cache使用記錄 spring-cache的使用記錄,坑點記錄以及采用的解決方案 深入分析 java 線程池的實現原理 在這篇文章中,作者有條不紊的將 ja...
摘要:在前面介紹的文章中,提到了關于線程池的創建介紹,在文章之系列外部中第一部分有詳細的說明,請參閱文章中其實說明了外部的使用方式,但是沒有說內部是如何實現的,為了加深對實現的理解,在使用中可以放心,我們這里將做源碼解析以及反饋到原理上,工具可 在前面介紹JUC的文章中,提到了關于線程池Execotors的創建介紹,在文章:《java之JUC系列-外部Tools》中第一部分有詳細的說明,請參...
摘要:數據結構和算法樹快速排序,堆排序,插入排序其實八大排序算法都應該了解一致性算法,一致性算法的應用的內存結構。如何存儲一個的。八大排序算法一定要手敲一遍快排,堆排尤其重要。面試是一個雙向選擇的過程,不要抱著畏懼的心態去面試,不利于自己的發揮。 前言 16年畢業到現在也近兩年了,最近面試了阿里集團(菜鳥網絡,螞蟻金服),網易,滴滴,點我達,最終收到點我達,網易offer,螞蟻金服二面掛掉,...
摘要:類型是位二進制標示,其中高位用來表示線程池狀態,后面位用來記錄線程池線程個數。創建一個最小線程個數為,最大為,阻塞隊列為的線程池。 一、 前言 線程池主要解決兩個問題:一方面當執行大量異步任務時候線程池能夠提供較好的性能,這是因為使用線程池可以使每個任務的調用開銷減少(因為線程池線程是可以復用的)。另一方面線程池提供了一種資源限制和管理的手段,比如當執行一系列任務時候對線程的管理,每個...
閱讀 680·2023-04-25 18:59
閱讀 1220·2021-09-22 16:00
閱讀 1892·2021-09-22 15:42
閱讀 3599·2021-09-22 15:27
閱讀 1253·2019-08-30 15:54
閱讀 1109·2019-08-30 11:16
閱讀 2454·2019-08-29 16:24
閱讀 830·2019-08-29 12:14