码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-01-19 16:18:42      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:class   date   主线程   其他   退出   trace   输出   nts   import   

/**
* <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();
}
}

}

}

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

标签:class   date   主线程   其他   退出   trace   输出   nts   import   

原文地址:https://www.cnblogs.com/javaxingtao/p/10291769.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!