首页 > 代码库 > 守护线程(后台线程)与非守护线程(用户线程,前台线程)
守护线程(后台线程)与非守护线程(用户线程,前台线程)
当前台线程结束后,jvm将直接杀死后台线程,并且后台线程不会去执行finally代码块中的内容
public class DemoThread implements Runnable { @Override public void run() { // TODO Auto-generated method stub try { Thread.currentThread().sleep(1000); System.out.println("我是非守护线程"); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); }; }}
public class Main { public static void main(String[] args) { threadStart(); } public static void threadStart(){ DemoThread dt = new DemoThread(); Thread thread = new Thread(dt); thread.setDaemon(true); thread.start(); }}
1、当直接启动时,不会打印出内容
2、当去掉thread.setDaemon(true)时,会打印出“我是非守护线程”
原因分析:当thread设置为守护线程时,主线程是前台线程,执行完之后就直接结束,jvm直接kill啦thread这个守护线程,这个守护线程中的内容就不会继续执行下去;当去掉那一行时,thread就默认时前台线程,jvm会等所有前台线程执行完之后才会结束,thread线程即打印出啦内容
守护线程(后台线程)与非守护线程(用户线程,前台线程)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。