`
geshenyi
  • 浏览: 100874 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Daemon thread

    博客分类:
  • J2SE
阅读更多
1.所谓守护线程就是运行在程序后台的线程,程序的主线程Main(比方java程序一开始启动时创建的那个线程)不会是守护线程  
2.Daemon thread在Java里面的定义是,如果虚拟机中只有Daemon thread 在运行,则虚拟机退出。 
  虚拟机中可能会同时有很多个线程在运行,只有当所有的非守护线程都结束的时候,虚拟机的进程才会结束,不管在运行的线程是不是main()线程。
3.Main主线程结束了(Non-daemon thread),如果此时正在运行的其他threads是daemon threads,JVM会使得这个threads停止,JVM也停下
  如果此时正在运行的其他threads有Non-daemon threads,那么必须等所有的Non daemon线程结束了,JVM才会停下来
4.总之,必须等所有的Non-daemon线程都运行结束了,只剩下daemon的时候,JVM才会停下来,注意Main主程序是Non-daemon线程
  默认产生的线程全部是Non-daemon线程

class   A   implements   Runnable{  
          public   void   run(){  
                  for(;;){  
                          System.out.println("Thread   A   run");  
                  }  
          }  
   
          public   static   void   main(String[]   args){  
                  System.out.println("Thread   main   started!");  
                  try{  
                          (new   Thread(new   A())).start();  
                  }   catch   (Exception   e){  
                  }  
                  System.out.println("Thread   main   ended!");  
          }  
  };  

会一直跑下去,因为main进程结束了,但   A   进程还没有结束,虚拟机不能退出,

class   A   implements   Runnable{  
          public   void   run(){  
                  for(;;){  
                          System.out.println("Thread   A   run");  
                  }  
          }  
   
          public   static   void   main(String[]   args){  
                  System.out.println("Thread   main   started!");  
                  try{  
                          Thread   a   =   new   Thread(new   A());  
                          a.setDaemon(true);  
                          a.start();  
                  }   catch(Exception   e){  
                  }  
                  System.out.println("Thread   main   ended!");  
          }  
  };  

main   线程一退出,虚拟机就退出了,因为剩下在跑的   a   线程是守护线程,虚拟机不管它的死活的,直接退出了。
分享到:
评论

相关推荐

    java中的daemon thread

    java中的daemon thread java中有两种类型的thread,user threads 和 daemon threads。 User threads是高优先级的thread,JVM将会等待所有的User Threads运行完毕之后才会结束运行。 daemon threads是低优先级的...

    Java 守护线程,看这篇文章就对了! ( Daemon Thread )

    Java 的守护线程什么是Java的守护线程( Daemon Thread )?守护线程的区别?守护线程的作用?守护线程如何创建?守护线程如何判断?守护线程使用的注意事项总结 什么是Java的守护线程( Daemon Thread )? Java 提供...

    Java课件\thread.rar

    6. **守护线程(Daemon Thread)** - 守护线程不阻碍程序退出,当所有非守护线程结束时,程序会退出,即使仍有守护线程运行。 7. **线程池** - 使用`ExecutorService`和`ThreadPoolExecutor`管理线程,可以有效...

    Thread详细实例介绍演示

    - **守护线程(Daemon Thread)**:默认情况下,主线程是非守护线程。当所有非守护线程结束后,JVM才会退出。守护线程是为了服务其他线程而存在的,如垃圾收集器。设置线程为守护线程的方法是`setDaemon(true)`,...

    ThreadDaemon.class

    ThreadDaemon.class

    ThreadDaemon.java

    ThreadDaemon.java

    守护进程(java)

    在这段代码中,`daemonThread`被设置为守护线程,当其他非守护线程结束时,JVM会继续运行该线程直到其完成任务。 守护线程通常用于执行一些后台任务,如资源清理、日志记录、定时任务等。由于它们在所有非守护线程...

    JavaThread中断机制共11页.pdf.zip

    守护线程(Daemon Thread)在所有非守护线程结束后自动终止,此时,即使守护线程被中断,也不会有任何效果,因为整个Java虚拟机即将关闭。 10. **中断的局限性** 中断机制并不适用于所有情况,例如,如果线程被...

    java Thread

    守护线程(Daemon Thread)是一种特殊的线程,当所有非守护线程结束时,程序会退出,即使还有守护线程在运行。通过调用setDaemon(true)方法可将线程设置为守护线程。 六、线程中断 1. interrupt()方法:用于中断...

    python多线程专题

    daemon = threading.Thread(target=daemon_thread, daemon=True) daemon.start() # 主线程其他代码 ``` 在这个例子中,即使主线程结束,守护线程仍然会继续运行。 6. **线程状态信息** Python的`threading`模块...

    thread多线程学习记录

    在实际应用中,我们还需要考虑线程优先级、守护线程(Daemon Thread)以及线程组等特性。线程优先级可以影响线程调度,但Java的线程调度并不完全依赖于优先级,因此使用时需谨慎。守护线程是一种后台线程,当所有非...

    javathread.part104.rar

    8. **守护线程(Daemon Thread)**:守护线程不会阻止程序的退出,常用于后台服务,如垃圾回收器就是典型的守护线程。 9. **线程池(ThreadPool)**:通过`ExecutorService`和`ThreadPoolExecutor`,可以创建和管理...

    javathread.part03.rar

    8. **守护线程(Daemon Thread)**: 守护线程在所有非守护线程结束后自动终止,常用于后台服务,如垃圾回收器。 9. **中断线程**: `interrupt()`方法可以标记一个线程为中断状态,但不会立即停止线程。线程应...

    java实现后台进程

    Thread daemon = new Thread(() -> { // 守护线程代码 }); daemon.setDaemon(true); daemon.start(); ``` 六、Spring框架中的Async注解 在Spring框架中,可以使用@Async注解标记方法以异步方式执行,Spring会自动...

    多线程thread线程的理解

    10. **守护线程(Daemon Thread)**:守护线程在没有非守护线程运行时自动结束,常用于后台服务,如垃圾收集器。 通过学习和实践上述知识点,你将能够深入理解多线程编程,并能有效利用这一技术提高程序的性能和...

    06_Thread_java_boardkbl_

    6. **守护线程(Daemon Thread)** 守护线程是为其他线程服务的线程,当所有非守护线程结束时,即使守护线程还在运行,JVM也会退出。默认情况下,用户创建的线程都不是守护线程,可以通过`setDaemon(true)`将其设置...

    thread.zip

    6. **守护线程(Daemon Thread)**:与用户线程相对,守护线程不阻碍程序退出。例如,垃圾回收器就是典型的守护线程。 7. **线程池**:`ExecutorService`和`ThreadPoolExecutor`是Java并发框架的一部分,它们允许...

    java Thread & synchronized & concurrent 线程、同步、并发

    在`DaemonThreadTest.java`这个文件中,可能涉及到了Java的守护线程(Daemon Thread)。守护线程是一种特殊的线程,它的主要作用是为其他非守护线程提供服务。当所有的非守护线程都结束时,即使还有守护线程在运行,...

    java多线程应用实现方法

    6. 守护线程(Daemon Thread): 守护线程是一种特殊的线程,当所有非守护线程结束时,守护线程也会自动终止。通常用于后台服务,如垃圾收集器。 7. 线程优先级: Java中的线程有优先级,但实际线程调度仍然由操作...

Global site tag (gtag.js) - Google Analytics