zoukankan      html  css  js  c++  java
  • Thread的setDaemon(true)方法

    定义:守护线程--也称“服务线程”,在没有用户线程可服务时会自动离开。优先级:守护线程的优先级比较低,用于为系统中的其它对象和线程提供服务。

    设置:通过setDaemon(true)来设置线程为“守护线程”;将一个用户线程设置为守护线程的方式是在 线程对象创建 之前 用线程对象的setDaemon方法。

    example: 垃圾回收线程就是一个经典的守护线程,当我们的程序中不再有任何运行的Thread,程序就不会再产生垃圾,垃圾回收器也就无事可做,所以当垃圾回收线程是JVM上仅剩的线程时,垃圾回收线程会自动离开。它始终在低级别的状态中运行,用于实时监控和管理系统中的可回收资源。

    生命周期:守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。也就是说守护线程不依赖于终端,但是依赖于系统,与系统“同生共死”。那Java的守护线程是什么样子的呢。当JVM中所有的线程都是守护线程的时候,JVM就可以退出了;如果还有一个或以上的非守护线程则JVM不会退出。

    例子程序:

    thread = new Thread(this);

    thread.setDaemon(true);

    thread.start();

    当java虚拟机中没有非守护线程在运行的时候,java虚拟机会关闭。当所有常规线程运行完毕以后,守护线程不管运行到哪里,虚拟机都会退出运行。所以你的守护线程最好不要写一些会影响程序的业务逻辑。否则无法预料程序到底 会出现什么问题。

    import java.io.IOException;

    /*

    * 守护线程在没有用户线程可服务时自动离开

    * 在Java中比较特殊的线程是被称为守护(Daemon)线程的低级别线程。

    * 这个线程具有最低的优先级,用于为系统中的其它对象和线程提供服务。

    * 将一个用户线程设置为守护线程的方式是在线程对象创建之前调用线程对象的setDaemon方法。

    * 典型的守护线程例子是JVM中的系统资源自动回收线程,

    * 我们所熟悉的Java垃圾回收线程就是一个典型的守护线程,

    * 当我们的程序中不再有任何运行中的Thread,

    * 程序就不会再产生垃圾,垃圾回收器也就无事可做,

    * 所以当垃圾回收线程是Java虚拟机上仅剩的线程时,Java虚拟机会自动离开。

    * 它始终在低级别的状态中运行,用于实时监控和管理系统中的可回收资源。

    * 守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。

    * 也就是说守护线程不依赖于终端,但是依赖于系统,与系统“同生共死”。

    * 那Java的守护线程是什么样子的呢。

    * 当JVM中所有的线程都是守护线程的时候,JVM就可以退出了;

    * 如果还有一个或以上的非守护线程则JVM不会退出。

    转:http://coolfire9201207034819.iteye.com/blog/1660737

  • 相关阅读:
    【BZOJ4890】[TJOI2017]城市(动态规划)
    【BZOJ4887】[TJOI2017]可乐(矩阵快速幂)
    【BZOJ4873】[六省联考2017]寿司餐厅(网络流)
    【BZOJ4868】[六省联考2017]期末考试(贪心)
    【Luogu3733】[HAOI2017]八纵八横(线性基,线段树分治)
    【Luogu3732】[HAOI2017]供给侧改革(Trie树)
    【Luogu3731】[HAOI2017]新型城市化(网络流,Tarjan)
    【BZOJ5332】[SDOI2018]旧试题(数论,三元环计数)
    28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?
    基础学习day07---面向对象三---继承,接口与 抽象类
  • 原文地址:https://www.cnblogs.com/twoheads/p/9492161.html
Copyright © 2011-2022 走看看