国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Java中的守護(hù)(Daemon)線程中finally代碼塊是否執(zhí)行的問(wèn)題

2019-11-14 14:54:56
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

http://m.survivalescaperooms.com/luochengor/archive/2011/08/11/2134818.html

這篇文章應(yīng)該是Thinking in java 中文版中的一段,關(guān)于線程-守護(hù)線程(Daemon Thread)的介紹

 

可能是我理解de不好,我對(duì)書對(duì)于daemon thread 中的finally是否執(zhí)行的介紹有點(diǎn)迷糊了,故自己寫個(gè)方法測(cè)試之后才搞明白。

就拿書中的例子做進(jìn)一步說(shuō)明。先來(lái)看下原文:不看我的羅嗦,可以直接看文章結(jié)尾的結(jié)論。

import java.util.concurrent.TimeUnit;/** * Finally shoud be always run ? */public class DaemonsDontRunFinally {    public static void main(String[] args) {        Thread t = new Thread(new ADaemon());        t.setDaemon(true);        t.start();    }}class ADaemon implements Runnable {    public void run() {        try {            System.out.);            TimeUnit.SECONDS.sleep(1);        } catch (InterruptedException e) {            System.out.println("Exiting via InterruptedException");        } finally {            System.out.println("This shoud be always run ?");        }    }}

運(yùn)行結(jié)果:

start ADaemon...

如果將main函數(shù)中的t.setDaemon(true);注釋掉,運(yùn)行結(jié)果如下:

start ADaemon...

This shoud be always run ?

-----------------------------------------------------------------------

而我實(shí)際運(yùn)行的結(jié)果不是這樣的,實(shí)際是:

t 是 daemon 線程時(shí),什么都不輸出

t 不是daemon 線程時(shí),輸出

start ADaemon...
This shoud be always run ?

看完書中所述,給我的理解是daemon線程類中的finally代碼塊都不會(huì)得到執(zhí)行(當(dāng)然我對(duì)此是懷疑的)

開始測(cè)試,我讓main方法結(jié)束前 sleep 10秒,看到當(dāng)t是守護(hù)線程時(shí),finally的代碼塊是執(zhí)行的。

繼續(xù)測(cè)試,我讓main方法結(jié)束前sleep 1秒,finally的代碼塊也是不執(zhí)行的(daemon 線程也是sleep 1秒)

所以我得到以下結(jié)論:

runnable實(shí)現(xiàn)類中的run方法中如果含有finally代碼塊,如果執(zhí)行該類實(shí)例的線程是守護(hù)線程(daemon thread),finally代碼塊有可能是不會(huì)得到執(zhí)行的,但也有可能會(huì)執(zhí)行,

那就是文中提到的 如果用戶線程已經(jīng)全部退出運(yùn)行了,只剩下守護(hù)線程存在了,虛擬機(jī)也就退出了,finally代碼塊即可能沒(méi)有機(jī)會(huì)執(zhí)行了。

所以守護(hù)線程中一般不要去對(duì)文件、數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)等資源進(jìn)行操作,以免資源文件來(lái)不及釋放,造成死鎖。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 景德镇市| 斗六市| 泾源县| 喀什市| 乐业县| 本溪市| 峨山| 东城区| 曲靖市| 古蔺县| 仙居县| 元谋县| 崇义县| 崇州市| 竹溪县| 汉阴县| 炉霍县| 汝阳县| 鲁山县| 祁东县| 福贡县| 湾仔区| 武冈市| 仙居县| 班玛县| 潜江市| 丰顺县| 普定县| 余庆县| 峨边| 师宗县| 莎车县| 苗栗县| 建阳市| 江达县| 新田县| SHOW| 喀什市| 连平县| 成安县| 迁西县|