久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

        手機(jī)站
        千鋒教育

        千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

        千鋒教育

        掃一掃進(jìn)入千鋒手機(jī)站

        領(lǐng)取全套視頻
        千鋒教育

        關(guān)注千鋒學(xué)習(xí)站小程序
        隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

        當(dāng)前位置:首頁  >  應(yīng)聘面試  >  Java面試題  > java面試題:java知識(shí)點(diǎn)合集(十一)

        java面試題:java知識(shí)點(diǎn)合集(十一)

        來源:千鋒教育
        發(fā)布人:wjy
        時(shí)間: 2022-07-14 17:08:03 1657789683

          一. Java 中的線程池是如何實(shí)現(xiàn)的

          創(chuàng)建一個(gè)阻塞隊(duì)列來容納任務(wù),在第一次執(zhí)行任務(wù)時(shí)創(chuàng)建足夠多的線程,并處理任務(wù),之后每個(gè)工作線程自動(dòng)從任務(wù)隊(duì)列中獲取線程,直到任務(wù)隊(duì)列中任務(wù)為0為止,此時(shí)線程處于等待狀態(tài),一旦有工作任務(wù)加入任務(wù)隊(duì)列中,即刻喚醒工作線程進(jìn)行處理,實(shí)現(xiàn)線程的可復(fù)用性。

          線程池一般包括四個(gè)基本組成部分:

          1. 線程池管理器

          用于創(chuàng)建線程池,銷毀線程池,添加新任務(wù)。

          2. 工作線程

          線程池中線程,可循環(huán)執(zhí)行任務(wù),在沒有任務(wù)時(shí)處于等待狀態(tài)。

          3. 任務(wù)隊(duì)列

          用于存放沒有處理的任務(wù),一種緩存機(jī)制。

          4. 任務(wù)接口

          每個(gè)任務(wù)必須實(shí)現(xiàn)的接口,供工作線程調(diào)度任務(wù)的執(zhí)行,主要規(guī)定了任務(wù)的開始和收尾工作,和任務(wù)的狀態(tài)。

          二. 創(chuàng)建線程池的幾個(gè)核心構(gòu)造參數(shù)

        java面試題:java知識(shí)點(diǎn)111

          三. 線程池中的線程是怎么創(chuàng)建的?是一開始就隨著線程池的啟動(dòng)創(chuàng)建好的嗎?

          線程池中的線程是在第一次提交任務(wù)submit時(shí)創(chuàng)建的

          創(chuàng)建線程的方式有繼承Thread和實(shí)現(xiàn)Runnable,重寫run方法,start開始執(zhí)行,wait等待,sleep休眠,shutdown停止。

          1. newSingleThreadExecutor:單線程池

          顧名思義就是一個(gè)池中只有一個(gè)線程在運(yùn)行,該線程永不超時(shí),而且由于是一個(gè)線程,當(dāng)有多個(gè)任務(wù)需要處理時(shí),會(huì)將它們放置到一個(gè)無界阻塞隊(duì)列中逐個(gè)處理,它的實(shí)現(xiàn)代碼如下:

        java面試題:java知識(shí)點(diǎn)222

          它的使用方法也很簡單,下面是簡單的示例:

        java面試題:java知識(shí)點(diǎn)333

          2. newCachedThreadPool:緩沖功能的線程

          建立了一個(gè)線程池,而且線程數(shù)量是沒有限制的(當(dāng)然,不能超過Integer的最大值),新增一個(gè)任務(wù)即有一個(gè)線程處理,或者復(fù)用之前空閑的線程,或者重親啟動(dòng)一個(gè)線程,但是一旦一個(gè)線程在60秒內(nèi)一直處于等待狀態(tài)時(shí)(也就是一分鐘無事可做),則會(huì)被終止,其源碼如下:

        java面試題:java知識(shí)點(diǎn)444

          這里需要說明的是,任務(wù)隊(duì)列使用了同步阻塞隊(duì)列,這意味著向隊(duì)列中加入一個(gè)元素,即可喚醒一個(gè)線程(新創(chuàng)建的線程或復(fù)用空閑線程來處理),這種隊(duì)列已經(jīng)沒有隊(duì)列深度的概念了。

          3. newFixedThreadPool:固定線程數(shù)量的線程池

          在初始化時(shí)已經(jīng)決定了線程的最大數(shù)量,若任務(wù)添加的能力超出了線程的處理能力,則建立阻塞隊(duì)列容納多余的任務(wù),其源碼如下:上面返回的是一個(gè)ThreadPoolExecutor,它的corePoolSize和maximumPoolSize是相等的,也就是說,最大線程數(shù)量為nThreads。如果任務(wù)增長的速度非???,超過了LinkedBlockingQuene的最大容量(Integer的最大值),那此時(shí)會(huì)如何處理呢?會(huì)按照ThreadPoolExecutor默認(rèn)的拒絕策略(默認(rèn)是DiscardPolicy,直接丟棄)來處理。

          以上三種線程池執(zhí)行器都是ThreadPoolExecutor的簡化版,目的是幫助開發(fā)人員屏蔽過得線程細(xì)節(jié),簡化多線程開發(fā)。當(dāng)需要運(yùn)行異步任務(wù)時(shí),可以直接通過Executors獲得一個(gè)線程池,然后運(yùn)行任務(wù),不需要關(guān)注ThreadPoolExecutor的一系列參數(shù)時(shí)什么含義。當(dāng)然,有時(shí)候這三個(gè)線程不能滿足要求,此時(shí)則可以直接操作ThreadPoolExecutor來實(shí)現(xiàn)復(fù)雜的多線程計(jì)算。

          newSingleThreadExecutor、newCachedThreadPool、newFixedThreadPool是線程池的簡化版,而ThreadPoolExecutor則是旗艦版___簡化版容易操作,需要了解的知識(shí)相對(duì)少些,方便使用,而旗艦版功能齊全,適用面廣,難以駕馭。

          更多關(guān)于“Java培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓(xùn)經(jīng)驗(yàn),課程大綱更科學(xué)更專業(yè),有針對(duì)零基礎(chǔ)的就業(yè)班,有針對(duì)想提升技術(shù)的好程序員班,高品質(zhì)課程助力你實(shí)現(xiàn)java程序員夢(mèng)想。

        tags:
        聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
        10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
        請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
        免費(fèi)領(lǐng)取
        今日已有369人領(lǐng)取成功
        劉同學(xué) 138****2860 剛剛成功領(lǐng)取
        王同學(xué) 131****2015 剛剛成功領(lǐng)取
        張同學(xué) 133****4652 剛剛成功領(lǐng)取
        李同學(xué) 135****8607 剛剛成功領(lǐng)取
        楊同學(xué) 132****5667 剛剛成功領(lǐng)取
        岳同學(xué) 134****6652 剛剛成功領(lǐng)取
        梁同學(xué) 157****2950 剛剛成功領(lǐng)取
        劉同學(xué) 189****1015 剛剛成功領(lǐng)取
        張同學(xué) 155****4678 剛剛成功領(lǐng)取
        鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
        董同學(xué) 138****2867 剛剛成功領(lǐng)取
        周同學(xué) 136****3602 剛剛成功領(lǐng)取
        相關(guān)推薦HOT
        面向?qū)ο缶幊痰奶卣魇鞘裁?請(qǐng)解釋每個(gè)特征

        答案:面向?qū)ο缶幊痰奶卣靼ǎ悍庋b(Encapsulation):封裝是將相關(guān)的數(shù)據(jù)和方法組合在一起形成類的機(jī)制。它可以隱藏內(nèi)部實(shí)現(xiàn)細(xì)節(jié),只暴露必要的...詳情>>

        2023-07-18 13:56:00
        容器是什么?如何理解容器

          容器(Container)是一個(gè)廣泛的概念,指的是一種可以容納其他元素或?qū)ο蟮臄?shù)據(jù)結(jié)構(gòu)或抽象概念。在計(jì)算機(jī)科學(xué)中,容器的概念經(jīng)常出現(xiàn)在數(shù)據(jù)結(jié)...詳情>>

        2023-05-08 13:41:00
        巴彦淖尔市| 洮南市| 安远县| 永城市| 资中县| 铁力市| 高邮市| 衡阳市| 洛宁县| 江源县| 余庆县| 神农架林区| 泰安市| 平安县| 桂林市| 黑山县| 渝中区| 潮安县| 宝鸡市| 公主岭市| 宽甸| 饶河县| 固镇县| 汝阳县| 扶余县| 河东区| 扶余县| 白水县| 来安县| 玛多县| 沙雅县| 宝坻区| 平顶山市| 泰顺县| 周至县| 株洲市| 东乡族自治县| 洛阳市| 大宁县| 韶山市| 遂昌县|