免费可以看的无遮挡av无码|国产在线拍揄自揄视频网站|在线无码精品视频播放在|欧美亚洲国产成人精品,国产成人久久77777精品,亚洲欧美视频在线观看,色偷偷色噜噜狠狠网站久久

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

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

關(guān)注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  應聘面試  >  Java面試題  > java面試題:java知識點合集(十一)

java面試題:java知識點合集(十一)

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

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

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

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

  1. 線程池管理器

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

  2. 工作線程

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

  3. 任務隊列

  用于存放沒有處理的任務,一種緩存機制。

  4. 任務接口

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

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

java面試題:java知識點111

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

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

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

  1. newSingleThreadExecutor:單線程池

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

java面試題:java知識點222

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

java面試題:java知識點333

  2. newCachedThreadPool:緩沖功能的線程

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

java面試題:java知識點444

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

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

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

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

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

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

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

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

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

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

2023-05-08 13:41:00