乱人伦 国语对白海角社区,五月激情丁香婷婷综合中文字幕,欧美伊人婷婷久久五月综合,亚洲精品无amm毛片,亚洲男人第一无码AV网站,国产日韩欧美丝袜一区二区,亚洲一区精品在线观看

「Java面试」如何中断一个正在运行的线程?-阿里体育直播CBA青岛

「Java面试」如何中断一个正在运行的线程?

2026-01-17 08:18:19投稿人:五百萬(wàn)彩票手機(jī)版(梧州)有限公司圍觀5947263 評(píng)論

「Java面試」如何中斷一個(gè)正在運(yùn)行的線程 ?

一個(gè)去京東面試的工作了5年的粉絲來(lái)找我說(shuō):

Mic老師 ,你說(shuō)并發(fā)編程很重要 ,果然我今天又掛在一道并發(fā)編程的面試題上了。

我問(wèn)他問(wèn)題是什么,他說(shuō) :”如何中斷一個(gè)正在運(yùn)行中的線程?“ 。

我說(shuō)這個(gè)問(wèn)題很多工作2年的人都知道~

好吧 ,對(duì)于這個(gè)問(wèn)題 ,來(lái)看看普通人和高手的回答。

普通人:

嗯。。。 。。 。。


高手:

關(guān)于這個(gè)問(wèn)題 ,我從幾個(gè)方面來(lái)回答。

首先 ,線程是系統(tǒng)級(jí)別的概念 ,在Java里面實(shí)現(xiàn)的線程,最終的執(zhí)行和調(diào)度都是由操作系統(tǒng)來(lái)決定的,JVM只是對(duì)操作系統(tǒng)層面的線程做了一層包裝而已  。

所以我們?cè)贘ava里面通過(guò)start方法啟動(dòng)一個(gè)線程的時(shí)候 ,只是告訴操作系統(tǒng)這個(gè)線程可以被執(zhí)行,但是最終交給CPU來(lái)執(zhí)行是操作系統(tǒng)的調(diào)度算法來(lái)決定的 。

「Java面試」如何中斷一個(gè)正在運(yùn)行的線程?

因此,理論上來(lái)說(shuō) ,要在Java層面去中斷一個(gè)正在運(yùn)行的線程 ,只能像類似于Linux里面的kill命令結(jié)束進(jìn)程的方式一樣,強(qiáng)制終止  。

所以 ,Java Thread里面提供了一個(gè)stop方法可以強(qiáng)行終止,但是這種方式是不安全的 ,因?yàn)橛锌赡芫€程的任務(wù)還沒(méi)有,導(dǎo)致出現(xiàn)運(yùn)行結(jié)果不正確的問(wèn)題 。

要想安全的中斷一個(gè)正在運(yùn)行的線程,只能在線程內(nèi)部埋下一個(gè)鉤子,外部程序通過(guò)這個(gè)鉤子來(lái)觸發(fā)線程的中斷命令。

因此 ,在Java Thread里面提供了一個(gè)interrupt()方法 ,這個(gè)方法配合isInterrupted()方法使用,就可以實(shí)現(xiàn)安全的中斷機(jī)制 。

這種實(shí)現(xiàn)方法并不是強(qiáng)制中斷 ,而是告訴正在運(yùn)行的線程,你可以停止了