成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面試官:線程池核心線程設(shè)置為0時(shí)任務(wù)執(zhí)行流程怎么樣的

開發(fā) 前端
線程池是Java中管理和重用線程的一種方式,也是實(shí)現(xiàn)并發(fā)編程的一種手段。通過使用線程池可以顯著提升多線程應(yīng)用程序的性能。

在面試時(shí),有的面試官就喜歡這種刁鉆角度的面試問題,如果你對(duì)線程池的任務(wù)執(zhí)行流程熟悉的話,那么該題就不會(huì)難住你。所以在開始之前,我們先看下線程池相關(guān)的知識(shí)。

本文使用 JDK8 演示。

一、概念

線程池是Java中管理和重用線程的一種方式,也是實(shí)現(xiàn)并發(fā)編程的一種手段。通過使用線程池可以顯著提升多線程應(yīng)用程序的性能。

線程池相對(duì)于線程來說,線程池主要解決了兩個(gè)問題,一個(gè)是線程的創(chuàng)建和銷毀代價(jià)大,另一個(gè)就是多線程并發(fā)執(zhí)行時(shí)可能導(dǎo)致系統(tǒng)資源不足的問題。

通過線程池,可以提前創(chuàng)建好一組一定數(shù)量的線程,并管理好這些線程的生命周期,也就是線程池中線程的存活時(shí)間,通過這些我們就可以在有需要的時(shí)候重用這些線程,減少創(chuàng)建和銷毀線程的開銷,提升系統(tǒng)的響應(yīng)速度和系統(tǒng)資源利用率。

二、線程池工作流程

線程池的任務(wù)執(zhí)行流程是怎么樣的呢?

  • 首先會(huì)判斷當(dāng)前工作線程數(shù)量是否大于核心線程數(shù)量(corePoolSize),如果小于核心線程數(shù)量,直接創(chuàng)建線程執(zhí)行任務(wù)。如果大于核心線程數(shù)量,就將任務(wù)放入任務(wù)隊(duì)列中進(jìn)行緩存。
  • 判斷任務(wù)隊(duì)列容量是否已滿,如果不滿,任務(wù)放入任務(wù)隊(duì)列。
  • 如果任務(wù)隊(duì)列滿了,判斷當(dāng)前工作線程數(shù)量是否大于最大線程數(shù)量(maximumPoolSize),如果小于最大線程數(shù)量,創(chuàng)建線程執(zhí)行任務(wù)。
  • 當(dāng)工作線程已經(jīng)大于最大線程了,此時(shí),任務(wù)會(huì)觸發(fā)拒絕策略,默認(rèn)的拒絕策略是拋出異常。

任務(wù)工作流程如下圖所示:

到了這你心中有結(jié)果了嗎,是不是線程池會(huì)把該任務(wù)丟入任務(wù)隊(duì)列呢,不著急,慢慢來,下面我們一起看下源碼中是如何判斷的。

三、源碼分析

1.寫個(gè)測試方法

在實(shí)際的工作中要注意設(shè)置線程名稱以及拒絕策略哦!

    public static void main(String[] args) {
        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(0,10,1000,
                TimeUnit.MILLISECONDS,
                new LinkedBlockingQueue<>(1000), new NamedThreadFactory("zuiyu",false));

        threadPoolExecutor.execute(()->{
            System.out.println("醉魚Java");
        });
    }

2.Debug 一下

首先我們看一下execute方法就知道是如何了。

通過 debug 發(fā)現(xiàn),當(dāng)代碼運(yùn)行到圖中圈起來的代碼這一行時(shí),也就是當(dāng)工作線程數(shù)量為0時(shí),會(huì)執(zhí)行下一步的創(chuàng)建線程執(zhí)行任務(wù)。

最后程序輸出了《醉魚Java》,所以當(dāng)核心線程設(shè)置為 0 的時(shí)候,線程池會(huì)判斷當(dāng)前工作線程為0 時(shí),會(huì)創(chuàng)建線程執(zhí)行任務(wù)。

結(jié)論

通過簡單的 debug 了一下任務(wù)的執(zhí)行流程,核心線程設(shè)置為 0 時(shí),當(dāng)把任務(wù)丟入線程池,還是會(huì)把任務(wù)丟入任務(wù)隊(duì)列,但是也會(huì)在下一步進(jìn)行判斷當(dāng)前工作線程的線程數(shù)量是否為 0,如果為 0,也會(huì)創(chuàng)建線程進(jìn)行執(zhí)行任務(wù)。所以現(xiàn)在你懂了嗎?

責(zé)任編輯:趙寧寧 來源: 醉魚Java
相關(guān)推薦

2024-05-08 00:00:00

核心線程數(shù)隊(duì)列

2024-09-12 08:35:06

2024-09-09 15:09:30

2022-03-28 08:31:29

線程池定時(shí)任務(wù)

2024-04-02 09:45:27

線程池Executors開發(fā)

2024-03-11 18:18:58

項(xiàng)目Spring線程池

2024-10-31 09:30:05

線程池工具Java

2021-11-29 10:55:11

線程池Java面試

2020-05-22 08:11:48

線程池JVM面試

2021-03-29 08:47:24

線程面試官線程池

2022-06-24 06:43:57

線程池線程復(fù)用

2024-09-11 22:51:19

線程通訊Object

2021-05-08 07:53:33

面試線程池系統(tǒng)

2023-11-29 16:38:12

線程池阻塞隊(duì)列開發(fā)

2023-12-20 14:35:37

Java虛擬線程

2025-02-21 15:25:54

虛擬線程輕量級(jí)

2023-11-06 17:39:35

JavaArrayList線程

2024-02-28 09:54:07

線程池配置

2023-02-04 07:34:12

URLIP身份定位

2022-02-08 08:14:07

Context數(shù)據(jù)線程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 在线激情视频 | 亚洲视频在线播放 | 亚洲狠狠 | 亚洲欧美中文日韩在线v日本 | 亚洲狠狠丁香婷婷综合久久久 | 国产精品久久久久久久模特 | 麻豆精品一区二区三区在线观看 | 国产香蕉视频在线播放 | 国产免费一区 | 美国黄色一级片 | 国产精品中文字幕一区二区三区 | 亚洲国产成人精品女人久久久 | 免费在线成人 | 日韩一及片 | 国产成人免费视频网站高清观看视频 | a黄在线观看 | 一级做a爰片性色毛片视频停止 | 亚洲欧美日韩精品久久亚洲区 | 成人精品一区二区三区中文字幕 | 日韩av成人 | 91视频在线 | 老司机免费视频 | 欧美视频在线观看 | 亚洲一本 | 麻豆天堂| 亚洲区视频 | 亚洲成人一区二区 | 欧美日韩免费在线 | 黄色大片观看 | 欧美视频成人 | 色婷婷一区二区三区四区 | 99久久婷婷国产综合精品电影 | 国产一区二区三区在线看 | 国产精品亚洲视频 | 久久精品国产99国产精品 | 91精品国模一区二区三区 | 欧美成人影院 | 国产成人精品一区二区在线 | 国产在线不卡视频 | 亚洲另类春色偷拍在线观看 | 国产精品久久久久久久久久免费看 |