Daemon thread

原创 2016年08月31日 16:14:45
1、所谓守护线程就是运行在程序后台的线程,程序的主线程Main(比方java程序一开始启动时创建的那个线程)不会是守护线程 
2.Daemon thread在Java里面的定义是,如果虚拟机中只有Daemon thread在运行,则虚拟机退出。 
 虚拟机中可能会同时有很多个线程在运行,只有当所有的非守护线程都结束的时候,虚拟机的进程才会结束。如果创建的线程没有显示调用此方法,这默认为用户线程。
3.JVM的资源回收线程就是这类线程。在该类线程中产生的其他线程不用设置,默认都是守护线程。
4.Thread.setDaemon()用法使用:

(1)setDaemon必须要在start方法调用之前使用

(2) 线程划分为用户线程和后台(daemon)进程,setDaemon将线程设置为后台进程

(3)如果jvm中都是后台进程,当前jvm将exit。(随之而来的,所有的一切烟消云散,包括后台线程啦)

(4)主线程结束后,

      1)用户线程将会继续运行

     2) 如果没有用户线程,都是后台进程的话,那么jvm结束

实例如下:

import java.io.IOException; 

public class DaemonThreadTest extends Thread{ 
     
    publicDaemonThreadTest() { } 
   
    public voidrun(){ 
       for(int i = 1; i <= 100;i++){ 
           try{ 
               Thread.sleep(100);                 
           } catch (InterruptedException ex){ 
               ex.printStackTrace(); 
           
           System.out.println(i); 
       
   
    publicstatic void main(String [] args){ 
       DaemonThreadTest test = newDaemonThreadTest(); 
       // 如果不设置daemon,那么线程将输出100后才结束 
       test.setDaemon(true); //在test未结束前,执行下面的输入操作,则test终止执行,因为jvm中只剩下守护线程时会终止
       test.start(); 
       System.out.println("isDaemon = " +test.isDaemon()); 
       try { 
           System.in.read(); //接受输入,使程序在此停顿,一旦接收到用户输入,main线程结束,守护线程自动结束 
       } catch (IOException ex) { 
           ex.printStackTrace(); 
       }
       System.out.print(Thread.currentThread().getName()+"结束");
   

python thread之daemon

daemon A boolean value indicating whether this thread is a daemon thread (True) or not (False). This...
  • Cain
  • Cain
  • 2011年07月13日 14:10
  • 9651

java多线程之守护线程(daemon thread)

转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/42402657 作者:小马 daemon是相于user线程而言的,可以...
  • pony_maggie
  • pony_maggie
  • 2015年01月06日 00:15
  • 8410

User Thread(用户线程)和Daemon Thread(守护线程)

在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程)      Daemon的作用是为其他线程的运行提供便利服务,比如垃圾回收线程就是一个很称职的守...
  • gerryzhu
  • gerryzhu
  • 2013年08月19日 10:30
  • 909

threading的应用以及join、setDaemon的分析

threading.Thread join() setDaemon()
  • xingzhe123456789000
  • xingzhe123456789000
  • 2016年08月13日 21:38
  • 477

Java中的Daemon线程--守护线程

守护线程         学习的过程中偶然发现Java中居然也有守护线程这东西,感觉十分好奇,网上查阅一些资料做一些整理 加深自己的记忆,同时也方便日后的再学习。好记性不如烂博客!         J...
  • kiritor
  • kiritor
  • 2013年10月04日 16:22
  • 11572

daemon thread

守护线程(daemon thread)随着程序退出而退出。而不是主线程
  • wuliuqiba123
  • wuliuqiba123
  • 2012年04月23日 23:22
  • 416

Daemon Thread

守护线程   Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程)       用户线程即运行在前台的线程,而守护线程是...
  • smithdoudou88
  • smithdoudou88
  • 2014年05月12日 14:45
  • 427

JAVA 线程之守护线程Daemon Thread

在Java中有两类线程:用户线程 (User Thread) 和 守护线程 (Daemon Thread)。 守护线程 是指在程序运行的时候在后台提供一种通用服务的线程,并不属于程序中不可或缺的部分 ...
  • Thousa_Ho
  • Thousa_Ho
  • 2017年04月15日 10:03
  • 479

Java中User Thread和Daemon Thread的区别

Java将线程分为User线程和Daemon线程两种。通常Daemon线程用来为User线程提供某些服务。程序的main()方法线程是一个User进程。User进程创建的进程为User进程。当所有的U...
  • lingli219
  • lingli219
  • 2014年08月26日 12:17
  • 265

【Java基础】Thread setDaemon 方法

Java基础,有的时候,你真的熟悉吗? 惭愧,很多基础真的没有细细看过,今后要多多看,细细学,勤笔记。 关于设置用户线程 void java.lang.Thread.setDaemon(bo...
  • wateray
  • wateray
  • 2014年03月08日 00:11
  • 720
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Daemon thread
举报原因:
原因补充:

(最多只允许输入30个字)