JavaSE8基础 多线程setDaemon 守护线程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaSE8基础 多线程setDaemon 守护线程相关的知识,希望对你有一定的参考价值。

礼悟:
           好好学习多思考,尊师重道存感恩。叶见寻根三返一,活水清源藏于零。
           虚怀若谷良心主,皓月当空自在王。愿给最苦行无悔,诚劝且行且珍惜。



 

    os :windows7 x64
    jdk:jdk-8u131-windows-x64
    ide:Eclipse Oxygen Release (4.7.0)

 

Thread的子类:

package jizuiku2;

import java.util.Date;

/*
 * @version V17.09
 */
public class MyThread extends Thread {

	// 具体的循环次数
	private int num;

	public MyThread(int num) {
		// TODO Auto-generated constructor stub
		this.num = num;
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		super.run();
		
		// new Date().getTime() 从标准0时刻到现在 毫秒值的累计
		for (int i = 0; i < this.num; ++i) {
			System.out.println(getName() + " " + i + " " + new Date().getTime());
		}
	}

}

 
测试类:

package jizuiku2;

/*
 * @version V17.09
 */
public class SHDemo {
	public static void main(String[] args) {
		
		MyThread zhu_mt50 = new MyThread(50);
		MyThread sh_mt100 = new MyThread(50);
		MyThread sh_mt200 = new MyThread(50);
		
		// 设置下面两个线程为守护线程
		sh_mt100.setDaemon(true);
		sh_mt200.setDaemon(true);
		
		zhu_mt50.setName("非守护");
		
		// 当运行的唯一线程都是守护进程线程时,Java虚拟机将退出。 
		// main所在的线程和zhu_mt50不是守护进程
		zhu_mt50.start();
		sh_mt100.start();
		sh_mt200.start();
		
		for (int i = 0; i < 500; i++) {
			System.out.println(i);
		}
		System.out.println("main所在的线程结束");
	}
}

 
结果:    
  当被守护的main线程结束时
技术分享

 

  守护线程也紧跟着结束
技术分享

 

   非守护线程运行到了最后

技术分享

 

API:

技术分享

 

在视频教程中,风清扬老师用一张图 生动形象的解释了 守护线程

技术分享

  很有趣。

 


Java优秀,值得学习。
学习资源:itcast和itheima视频库。如果您有公开的资源,可以分享给我的话,用您的资源学习也可以。
博文是观看视频后,融入思考写成的。博文好,是老师讲得好。博文坏,是 给最苦 没认真。















以上是关于JavaSE8基础 多线程setDaemon 守护线程的主要内容,如果未能解决你的问题,请参考以下文章

JAVA-初步认识-第十四章-多线程(守护线setDaemon)

python笔记9-多线程Threading之阻塞(join)和守护线程(setDaemon)

并发编程之多线程基础-守护线程与非守护线程

并发编程线程基础知识:守护线程

并发编程线程基础知识:守护线程

并发编程线程基础知识:守护线程