問題
什么是守護(hù)線程?使用場(chǎng)景是什么?如何創(chuàng)建守護(hù)線程?
答案
守護(hù)線程
守護(hù)線程通常執(zhí)行一些任務(wù),當(dāng)所有非守護(hù)線程終止的時(shí)候,JVM簡(jiǎn)單的丟棄掉所有現(xiàn)存的守護(hù)線程.一旦其它非守護(hù)線程執(zhí)行完,不一定所有的守護(hù)線程都會(huì)執(zhí)行完才退出,它們可能在非守護(hù)線程執(zhí)行完后的某個(gè)時(shí)刻退出.
使用場(chǎng)景
來(lái)為其它線程提供服務(wù)支持.
守護(hù)線程的創(chuàng)建
為了創(chuàng)建一個(gè)守護(hù)線程,需要在調(diào)用thread.start()
方法之前調(diào)用thread.setDeamon()
方法.
代碼如下:
Thread daemon = new Thread(()
-> System.out.println("Hello from daemon!"));
daemon.setDaemon(true);
daemon.start();
在上面這段代碼中,上面的這段消息可能不會(huì)被打印出來(lái),發(fā)生的場(chǎng)景是這樣的:當(dāng)main(()
方法執(zhí)行完之后,守護(hù)線程才得到了執(zhí)行的機(jī)會(huì),這個(gè)時(shí)候非守護(hù)線程退出了,那么守護(hù)線程即使得到了執(zhí)行的機(jī)會(huì),也有可能被終止.所以通常不要在守護(hù)線程中做一些重要的操作,因?yàn)樗鼈儾灰欢苋繄?zhí)行完.