当前位置: 移动技术网 > IT编程>开发语言>Java > java线程之守护线程和用户线程

java线程之守护线程和用户线程

2019年01月20日  | 移动技术网IT编程  | 我要评论

/**
* <p>title: demo3.java</p>
* <p>description: </p>
* <p>copyright: copyright (c) 2017</p>

* <p>company: www.baidudu.com</p>
* @author shenlan
* @date 2019年1月19日
* @version 1.0
*/
package test;

import java.util.concurrent.timeunit;

/**
* @title: demo3.java
* @description:模拟:创建主线程(用户线程)中创建一个子线程为守护线程,执行main方法(用户线程)
* --断点测试..执行main方法,启动主线程(不结束main(用户线程))
* ==输出..执行一次主线程,由于main方法(用户线程)未结束,守护线程每秒输出一次(守护线程守护的是用户线程)
* --正常模式..
* ==输出..主线程执行一次,守护线程执行一次,只有由于用户线程结束,jvm退出,守护线程结束
* //将(子线程)守护线程改为用户线程时,主线程结束,主线程中的子线程一直运行(每秒执行一次)
*
* 注意 :不是说当前子线程是守护线程,主线程结束,子线程就跟着结束,前提条件是:当jvm应用实例中没有应用线程继续执行,如果有其他用户线程继续执行,那么后台线程不会中断.
* @copyright: 投道科技 (c) 2018
* @company: 投道科技
* @author 阿涛
* @date 2019年1月19日
* @version 1.0
*/
public class demo3 {

public static void main(string[] args) {

thread mainthread = new thread(new runnable() {

@override
public void run() {
// todo auto-generated method stub
thread childrenthread = new thread(new childrenthread());
childrenthread.setdaemon(true);
// --守护线程必须在启动线程之前操作
childrenthread.start();
system.out.println("i'm main thread.");

}
});

mainthread.start();

}

}

class childrenthread implements runnable{

@override
public void run() {

while (true) {
system.out.println("i'm children thread.");

try {
timeunit.milliseconds.sleep(1000);
} catch (interruptedexception e) {
// todo auto-generated catch block
e.printstacktrace();
}
}

}

}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网