大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 必會的JVM線程池基礎(chǔ)知識

必會的JVM線程池基礎(chǔ)知識

更新時間:2020-10-27 17:47:15 來源:動力節(jié)點 瀏覽1723次

想要一個程序能快速高效的運行,對CPU的合理使用是關(guān)鍵。因為運行程序在本質(zhì)上是系統(tǒng)資源的使用,JVM線程池就是一種利用CPU的優(yōu)化方式,如何高效的使用這些資源是我們編程優(yōu)化演進(jìn)的一個方向。下面我們來講一講關(guān)于JVM線程池基礎(chǔ)知識。

image.png

提交一個任務(wù)到線程池中,JVM線程池的處理流程如下:

1、判斷線程池里的核心線程是否都在執(zhí)行任務(wù),如果不是(核心線程空閑或者還有核心線程沒有被創(chuàng)建)則創(chuàng)建一個新的工作線程來執(zhí)行任務(wù)。如果核心線程都在執(zhí)行任務(wù),則進(jìn)入下個流程。

2、線程池判斷工作隊列是否已滿,如果工作隊列沒有滿,則將新提交的任務(wù)存儲在這個工作隊列里。如果工作隊列滿了,則進(jìn)入下個流程。

3、判斷線程池里的線程是否都處于工作狀態(tài),如果沒有,則創(chuàng)建一個新的工作線程來執(zhí)行任務(wù)。如果已經(jīng)滿了,則交給飽和策略來處理這個任務(wù)。


在線程池中,有如下五個參數(shù)是需要知道的:

1、corePoolSize(線程池基本大小):當(dāng)向線程池提交一個任務(wù)時,若線程池已創(chuàng)建的線程數(shù)小于corePoolSize,即便此時存在空閑線程,也會通過創(chuàng)建一個新線程來執(zhí)行該任務(wù),直到已創(chuàng)建的線程數(shù)大于或等于corePoolSize時,(除了利用提交新任務(wù)來創(chuàng)建和啟動線程(按需構(gòu)造),也可以通過 prestartCoreThread() 或 prestartAllCoreThreads() 方法來提前啟動線程池中的基本線程。)

2、maximumPoolSize(線程池最大大小):線程池所允許的最大線程個數(shù)。當(dāng)隊列滿了,且已創(chuàng)建的線程數(shù)小于maximumPoolSize,則線程池會創(chuàng)建新的線程來執(zhí)行任務(wù)。另外,對于無界隊列,可忽略該參數(shù)。

3、keepAliveTime(線程存活保持時間)當(dāng)線程池中線程數(shù)大于核心線程數(shù)時,線程的空閑時間如果超過線程存活時間,那么這個線程就會被銷毀,直到線程池中的線程數(shù)小于等于核心線程數(shù)。

4、workQueue(任務(wù)隊列):用于傳輸和保存等待執(zhí)行任務(wù)的阻塞隊列。

5、threadFactory(線程工廠):用于創(chuàng)建新線程。threadFactory創(chuàng)建的線程也是采用new Thread()方式,threadFactory創(chuàng)建的線程名都具有統(tǒng)一的風(fēng)格:pool-m-thread-n(m為線程池的編號,n為線程池內(nèi)的線程編號)。

image.png

JVM線程池的簡單使用,以下代碼,是在Java中創(chuàng)建線程池:

import java.util.concurrent.*;

public class App {

    public static void main(String[] args) throws Exception {

        ExecutorService executorService = new ThreadPoolExecutor(1, 1,

                60L, TimeUnit.SECONDS,

                new ArrayBlockingQueue<>(10));

        executorService.execute(new Runnable() {

            @Override

            public void run() {

                System.out.println("abcdefg");

            }

        });

        executorService.shutdown();

    }


Jdk提供給外部的接口也很簡單,直接調(diào)用ThreadPoolExecutor構(gòu)造一個就可以了,也可以通過Executors靜態(tài)工廠構(gòu)建,可以看到,開發(fā)者想要在代碼中使用線程池還是比較簡單的。


今天學(xué)習(xí)的關(guān)于JVM線程池必會基礎(chǔ)知識就是上面的內(nèi)容了,希望可以對java零基礎(chǔ)的朋友們學(xué)習(xí)線程池有所幫助。對于線程池,除了知道原理和一些參數(shù)外,大家可以在java教程中學(xué)習(xí)怎樣布置線程池,因為更重要的是要會在代碼中合理使用線程池,從而高效的運行程序。


提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 亚洲精品在线看 | 欧美性www| 国产激情视频一区二区三区 | 久久99国产精一区二区三区 | 国产一区日韩二区欧美三 | 色综合天天综合网国产人 | 国产欧美一区二区久久 | 亚洲综合日韩中文字幕v在线 | 激情五月婷婷在线 | 亚洲最大在线视频 | 可以免费观看的一级片 | 97视屏 | 日韩孕交japanese孕交 | 亚洲视频999 | 97久久曰曰久久久 | 九九99久麻豆精品视传媒 | 四虎影音在线 | 奇米影视444 | 日本成本人观看免费视频fc2 | 中文字幕亚洲第一 | 国内精品伊人久久久影院 | 日韩专区中文字幕 | 理论片毛片 | 伊人免费视频 | 91日本视频 | 超碰最新上传 | 欧美激情精品久久久久久不卡 | 国产成人精品aaaa视频一区 | 免费四影虎ww4hu10 | 狠狠插网站 | 亚洲人成免费网站 | 国产成人99精品免费视频麻豆 | 国内精品久久久久久影院老狼 | 国产大片中文字幕在线观看 | 久久精品国产免费 | 午夜不卡福利 | 国产麻豆免费 | 亚洲伦理网站 | 伊人亚洲综合网 | 青青青青爽视频在线播放 | 亚洲女bbwxxxx另类 |