zoukankan      html  css  js  c++  java
  • 守护线程

    定义:守护线程--也称“服务线程”,在没用户线程可服务时会自动离开。优先级:守护线程的优先级比较低,用于为系统中的其它对象和线程提供服务。
    设置:通过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不会退出。
    */

  • 相关阅读:
    AFN的使用(待整理)
    [转]文件上传进度显示
    图片上传在线预览
    Mysql中文乱码,修改字符集
    struts2 实现自定义标签
    设置HTML和JSP页面不缓存的方法
    Spring framework3.2整合hibernate4.1报错:No Session found for current thread
    Java用SAX解析XML
    js操作Cookie
    php创建缩略图
  • 原文地址:https://www.cnblogs.com/hyp5490-/p/6376648.html
Copyright © 2011-2022 走看看