黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專(zhuān)注Java教育14年 全國(guó)咨詢(xún)/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) 一線大廠總結(jié)出的Java項(xiàng)目經(jīng)理面試題

一線大廠總結(jié)出的Java項(xiàng)目經(jīng)理面試題

更新時(shí)間:2022-12-09 15:00:17 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1997次

你是否已經(jīng)準(zhǔn)備好跳槽了呢,是否期望自己拿到更高的薪資呢,是否有望獲得心儀的offer呢!那么,今天這套Java面試題是你不二之選,本篇題目總結(jié)了在各大一線互聯(lián)網(wǎng)公司面試官的出題經(jīng)驗(yàn),深剖核心問(wèn)題,多角度的去挖掘后,為大呈現(xiàn)出來(lái)的:

java項(xiàng)目經(jīng)理面試題

資源回收

考慮到系統(tǒng)資源是有限的,對(duì)于線程池超出 corePoolSize 數(shù)量的空閑線程應(yīng)進(jìn)行回收操作。進(jìn)行此操作存在一個(gè)問(wèn)題,即回收時(shí)機(jī)。目前的實(shí)現(xiàn)方式是當(dāng)線程空閑時(shí)間超過(guò) keepAliveTime 后,進(jìn)行回收。除了核心線程數(shù)之外的線程可以進(jìn)行回收,核心線程內(nèi)的空閑線程也可以進(jìn)行回收。回收的前提是allowCoreThreadTimeOut屬性被設(shè)置為 true,通過(guò)public void allowCoreThreadTimeOut(boolean) 方法可以設(shè)置屬性值。

排隊(duì)策略

如 3.1.2 線程創(chuàng)建規(guī)則一節(jié)中規(guī)則 2 所說(shuō),當(dāng)線程數(shù)量大于等于 corePoolSize,workQueue 未滿時(shí),則緩存新任務(wù)。這里要考慮使用什么類(lèi)型的容器緩存新任務(wù),通過(guò) JDK 文檔介紹,我們可知道有 3 中類(lèi)型的容器可供使用,分別是同步隊(duì)列,有界隊(duì)列和無(wú)界隊(duì)列。對(duì)于有優(yōu)先級(jí)的任務(wù),這里還可以增加優(yōu)先級(jí)隊(duì)列。以上所介紹的 4 中類(lèi)型的隊(duì)列,對(duì)應(yīng)的實(shí)現(xiàn)類(lèi)如下:

| 實(shí)現(xiàn)類(lèi) | 類(lèi)型 | 說(shuō)明 |

| --- | --- | --- |

| SynchronousQueue | 同步隊(duì)列 | 該隊(duì)列不存儲(chǔ)元素,每個(gè)插入操作必須等待另一個(gè)線程調(diào)用移除操作,否則插入操作會(huì)一直阻塞 |

| ArrayBlockingQueue | 有界隊(duì)列 | 基于數(shù)組的阻塞隊(duì)列,按照 FIFO 原則對(duì)元素進(jìn)行排序 |

| LinkedBlockingQueue | 無(wú)界隊(duì)列 | 基于鏈表的阻塞隊(duì)列,按照 FIFO 原則對(duì)元素進(jìn)行排序 |

| PriorityBlockingQueue | 優(yōu)先級(jí)隊(duì)列 | 具有優(yōu)先級(jí)的阻塞隊(duì)列 |

拒絕策略

如 3.1.2 線程創(chuàng)建規(guī)則一節(jié)中規(guī)則 4 所說(shuō),線程數(shù)量大于等于 maximumPoolSize,且 workQueue 已滿,則使用拒絕策略處理新任務(wù)。Java 線程池提供了 4 中拒絕策略實(shí)現(xiàn)類(lèi),如下:

| 實(shí)現(xiàn)類(lèi) | 說(shuō)明 |

| --- | --- |

| AbortPolicy | 丟棄新任務(wù),并拋出?RejectedExecutionException |

| DiscardPolicy | 不做任何操作,直接丟棄新任務(wù) |

| DiscardOldestPolicy | 丟棄隊(duì)列隊(duì)首的元素,并執(zhí)行新任務(wù) |

| CallerRunsPolicy | 由調(diào)用線程執(zhí)行新任務(wù) |

以上 4 個(gè)拒絕策略中,AbortPolicy 是線程池實(shí)現(xiàn)類(lèi)所使用的策略。我們也可以通過(guò)方法public void setRejectedExecutionHandler(RejectedExecutionHandler)修改線程池決絕策略。

線程的創(chuàng)建與復(fù)用

在線程池的實(shí)現(xiàn)上,線程的創(chuàng)建是通過(guò)線程工廠接口ThreadFactory的實(shí)現(xiàn)類(lèi)來(lái)完成的。默認(rèn)情況下,線程池使用Executors.defaultThreadFactory()方法返回的線程工廠實(shí)現(xiàn)類(lèi)。當(dāng)然,我們也可以通過(guò)

public void setThreadFactory(ThreadFactory)方法進(jìn)行動(dòng)態(tài)修改。具體細(xì)節(jié)這里就不多說(shuō)了,并不復(fù)雜,大家可以自己去看下源碼。

在線程池中,線程的復(fù)用是線程池的關(guān)鍵所在。這就要求線程在執(zhí)行完一個(gè)任務(wù)后,不能立即退出。對(duì)應(yīng)到具體實(shí)現(xiàn)上,工作線程在執(zhí)行完一個(gè)任務(wù)后,會(huì)再次到任務(wù)隊(duì)列獲取新的任務(wù)。如果任務(wù)隊(duì)列中沒(méi)有任務(wù),且 keepAliveTime 也未被設(shè)置,工作線程則會(huì)被一致阻塞下去。通過(guò)這種方式即可實(shí)現(xiàn)線程復(fù)用。

說(shuō)完原理,再來(lái)看看線程的創(chuàng)建和復(fù)用的相關(guān)代碼(基于 JDK 1.8),如下:

`+----ThreadPoolExecutor.Worker.java Worker(Runnable firstTask) {


setState(-1);


this.firstTask = firstTask;


// 調(diào)用線程工廠創(chuàng)建線程


this.thread = getThreadFactory().newThread(this);


}


// Worker 實(shí)現(xiàn)了 Runnable 接口


public void run() {


runWorker(this);


}


+----ThreadPoolExecutor.java final void runWorker(Worker w) {


Thread wt = Thread.currentThread();


Runnable task = w.firstTask;


w.firstTask = null;


w.unlock();


boolean completedAbruptly = true;


try {


// 循環(huán)從任務(wù)隊(duì)列中獲取新任務(wù)


while (task != null || (task = getTask()) != null) {


w.lock();


// If pool is stopping, ensure thread is interrupted;


// if not, ensure thread is not interrupted.  This


// requires a recheck in second case to deal with


// shutdownNow race while clearing interrupt


if ((runStateAtLeast(ctl.get(), STOP) ||


(Thread.interrupted() &&


runStateAtLeast(ctl.get(), STOP))) &&


!wt.isInterrupted())


wt.interrupt();


try {


beforeExecute(wt, task);


Throwable thrown = null;


try {


// 執(zhí)行新任務(wù)


task.run();


} catch (RuntimeException x) {


thrown = x; throw x;


} catch (Error x) {


thrown = x; throw x;


} catch (Throwable x) {


thrown = x; throw new Error(x);


} finally {


afterExecute(task, thrown);


}


} finally {


task = null;


w.completedTasks++;


w.unlock();


}


}


completedAbruptly = false;


} finally {


// 線程退出后,進(jìn)行后續(xù)處理


processWorkerExit(w, completedAbruptly);


}


}`

以上就是“一線大廠總結(jié)出的Java項(xiàng)目經(jīng)理面試題”,你能回答上來(lái)嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動(dòng)力節(jié)點(diǎn)Java官網(wǎng)。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 一区二区中文字幕在线观看 | 在线观看免费国产视频 | 成人永久免费 | 色爱综合区五月小说 | 成人毛片在线 | 国产a精品 | 国产成人青草视频 | 在线观看永久免费 | 能在线观看的一区二区三区 | 亚洲天堂久久久 | 欧美国产中文 | 亚洲图片欧美文学小说激情 | 黄色aa毛片 | 97久久曰曰久久久 | 91污污视频 | 日韩伦乱 | 麻豆大豆行情一区 | a级成人毛片免费视频高清 a级片免费网站 | 日韩欧美爱爱 | 亚洲另类z0zx | 日韩一区二区三区在线播放 | 国产成人精品永久免费视频 | 91香蕉视频苹果 | 色黄啪啪网18以下勿进动画 | 首页 动漫 亚洲 欧美 日韩 | 又色又爽又黄的视频网站 | 天天操综合视频 | 成人免费观看在线网址 | 日韩黄色在线播放 | 在线视频精品免费 | 亚洲图片欧美日韩 | 久久婷婷是五月综合色狠狠 | 中文字幕欧美在线观看 | 日本欧美在线播放 | 在线观看黄免费 | 在线播放精品 | 小明日韩在线看看永久区域 | 欧美播放 | 中文字幕亚洲国产 | 国产成人短视频 | 五月婷视频 |