zoukankan      html  css  js  c++  java
  • 守护线程(后台线程)与非守护线程(用户线程,前台线程)

     当前台线程结束后,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线程即打印出啦内容

  • 相关阅读:
    python-单链表的实现
    python-树形结构和遍历
    python四种简单排序
    python数据类型
    python安装和配置
    Js 中的false,零值,null,undefined和空字符串对象
    console和chrom-tool
    js中声明Number的五种方式
    vue下拉搜索
    canvas猜数游戏
  • 原文地址:https://www.cnblogs.com/flymolgee/p/6056414.html
Copyright © 2011-2022 走看看