Java語言多線程終止中的守護線程實例

Java中線程分為兩種類型:用戶線程和守護(服務)線程。通過Thread.setDaemon(false)設置為用戶線程;通過Thread.setDaemon(true)設置為守護線程;不設置則默認為用戶線程。

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供江夏網(wǎng)站建設、江夏做網(wǎng)站、江夏網(wǎng)站設計、江夏網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、江夏企業(yè)網(wǎng)站模板建站服務,十余年江夏做網(wǎng)站經驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。

結束單線程用 Thread.interrupt() 方法,多線程結束則需要設置守護線程。當不存在用戶線程時,守護線程就會全部終結(可以理解為:守護線程是服務線程,用戶線程是被服務線程,用戶線程(被服務線程)全都沒有了,服務線程便沒有存在意義而自動終結)

例子:

class StopThread implements Runnable {
	public void run() {
		// 構造函數(shù),實例化時默認執(zhí)行
		while (true) {
			// 永真循環(huán),用于檢測該守護線程會不會自動結束
			System.out.println(Thread.currentThread().getName() + "....run");
		}
	}
}
public class threadTest {
	public static void main(String[] args) {
		StopThread st = new StopThread();
		Thread t1 = new Thread(st);
		// 創(chuàng)建新線程
		Thread t2 = new Thread(st);
		t1.setDaemon(true);
		// 設置成守護(服務)線程,當用戶線程全掛時,所有守護線程也跟著掛
		t2.setDaemon(true);
		t1.start();
		// 線程開始
		t2.start();
		int num = 0;
		while (true) {
			if (num++ == 10) {
				break;
			}
			System.out.println(Thread.currentThread().getName() + "......." + num);
		}
		System.out.println("over");
	}
}

當執(zhí)行完最后一句 System.out.println(“over”) 時,用戶線程(主程序)結束;在后臺永真循環(huán)里 不斷輸出信息的兩個守護線程 也會自動終止。

另外介紹一個常見的問題:Java里面 所有非守護線程結束后,所有的守護線程自動退出這句話對嗎?

參考答案:

守護線程的唯一作用是為其他線程提供服務.當只剩下守護線程時,虛擬機就退出了”(出自:java核心技術),現(xiàn)在非守護的沒有了,也就不需要守護來提供服務了。

總結

以上就是本文關于Java語言多線程終止中的守護線程實例的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

網(wǎng)頁名稱:Java語言多線程終止中的守護線程實例
網(wǎng)站路徑:http://muchs.cn/article42/jehehc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供響應式網(wǎng)站、微信小程序、移動網(wǎng)站建設、外貿網(wǎng)站建設、做網(wǎng)站、自適應網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化