国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java中線程池原理以及參數說明

HmyBmny / 2598人閱讀

摘要:首先我們來了解下線程池的基本原理第一步便是我們將我們的任務提交給線程池如果線程池中線程數小于核心線程數,則創建一個新的線程來執行該任務。

Java開發的同學肯定使用過多線程,使用多線程那就肯定會用到線程池。而且個人認為線程池也是各大互聯網公司在面試的時候必問的一個知識點。因此作為開發人員,必須了解線程池的原理以及具體參數的含義。

首先我們來了解下線程池的基本原理

第一步便是我們將我們的任務提交給線程池

如果線程池中線程數小于核心線程數,則創建一個新的線程來執行該任務。否則進入步驟3

提交任務時,線程池中的空閑的線程數為0并且線程數等于核心線程數,則觀察線程池中的任務隊列是否已滿,如果未滿則將任務添加到任務隊列,否則進入步驟4

如果最大線程數大于核心線程數,并且總線程數小于最大線程數,則創建一個新的線程來執行該任務。否則進入步驟5

當任務隊列已滿時,就執行拒絕策略(后續詳解拒絕策略)

在大致了解了線程池的基本工作原理之后,我們再細看下線程池核心類ThreadPoolExecutor

    public ThreadPoolExecutor(int corePoolSize,
                              int maximumPoolSize,
                              long keepAliveTime,
                              TimeUnit unit,
                              BlockingQueue workQueue,
                              ThreadFactory threadFactory,
                              RejectedExecutionHandler handler) {
                              //省略具體的代碼內容
    }

參數說明

參數 說明
corePoolSize 核心線程數
maximumPoolSize 最大線程數,一般大于等于核心線程數
keepAliveTime 線程存活時間(針對最大線程數大于核心線程數時,非核心線程)
unit 存活時間單位,和線程存活時間配套使用
workQueue 任務隊列
threadFactory 創建線程的工程
handler 拒絕策略

拒絕策略有以下幾種

拒絕策略 說明
AbortPolicy 為java線程池默認的阻塞策略,不執行此任務,而且直接拋出一個運行時異常。
DiscardOldestPolicy 丟棄隊列最前面的任務,然后重新嘗試執行任務(重復此過程)
DiscardPolicy 也是丟棄任務,但是不拋出異常
CallerRunsPolicy 由調度線程處理該任務

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/74674.html

相關文章

  • 后端ing

    摘要:當活動線程核心線程非核心線程達到這個數值后,后續任務將會根據來進行拒絕策略處理。線程池工作原則當線程池中線程數量小于則創建線程,并處理請求。當線程池中的數量等于最大線程數時默默丟棄不能執行的新加任務,不報任何異常。 spring-cache使用記錄 spring-cache的使用記錄,坑點記錄以及采用的解決方案 深入分析 java 線程池的實現原理 在這篇文章中,作者有條不紊的將 ja...

    roadtogeek 評論0 收藏0
  • Java線程架構(一)原理和源碼解析

    摘要:在前面介紹的文章中,提到了關于線程池的創建介紹,在文章之系列外部中第一部分有詳細的說明,請參閱文章中其實說明了外部的使用方式,但是沒有說內部是如何實現的,為了加深對實現的理解,在使用中可以放心,我們這里將做源碼解析以及反饋到原理上,工具可 在前面介紹JUC的文章中,提到了關于線程池Execotors的創建介紹,在文章:《java之JUC系列-外部Tools》中第一部分有詳細的說明,請參...

    wthee 評論0 收藏0
  • Java線程

    摘要:中的線程池運用場景非常廣泛,幾乎所有的一步或者并發執行程序都可以使用。代碼中如果執行了方法,線程池會提前創建并啟動所有核心線程。線程池最大數量線程池允許創建的線程最大數量。被稱為是可重用固定線程數的線程池。 Java中的線程池運用場景非常廣泛,幾乎所有的一步或者并發執行程序都可以使用。那么線程池有什么好處呢,以及他的實現原理是怎么樣的呢? 使用線程池的好處 在開發過程中,合理的使用線程...

    tomato 評論0 收藏0
  • 一個兩年Java的面試總結

    摘要:數據結構和算法樹快速排序,堆排序,插入排序其實八大排序算法都應該了解一致性算法,一致性算法的應用的內存結構。如何存儲一個的。八大排序算法一定要手敲一遍快排,堆排尤其重要。面試是一個雙向選擇的過程,不要抱著畏懼的心態去面試,不利于自己的發揮。 前言 16年畢業到現在也近兩年了,最近面試了阿里集團(菜鳥網絡,螞蟻金服),網易,滴滴,點我達,最終收到點我達,網易offer,螞蟻金服二面掛掉,...

    anRui 評論0 收藏0
  • Java線程ThreadPoolExecutor原理探究

    摘要:類型是位二進制標示,其中高位用來表示線程池狀態,后面位用來記錄線程池線程個數。創建一個最小線程個數為,最大為,阻塞隊列為的線程池。 一、 前言 線程池主要解決兩個問題:一方面當執行大量異步任務時候線程池能夠提供較好的性能,這是因為使用線程池可以使每個任務的調用開銷減少(因為線程池線程是可以復用的)。另一方面線程池提供了一種資源限制和管理的手段,比如當執行一系列任務時候對線程的管理,每個...

    lavor 評論0 收藏0

發表評論

0條評論

HmyBmny

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<