Java多线程 守护线程

文章目录

      • 守护线程的作用
      • 守护线程的三个特性
      • 守护线程面试题

守护线程的作用

作用: 给用户线程提供服务(比如jvm的垃圾处理线程). 如果现在的线程都是守护线程, 那么守护线程就会和jvm一起停止工作. 因为此时没有守护的对象了.

java虚拟机只有两种情况才会结束运行:

  1. 人为的调用System.exit(0); 此种情况很少.
  2. 大部分的情况是代码执行结束了. 虚拟机才会结束运行

我们自身写的代码虽然执行完毕了 ,但是其实背后很是会有很多的守护线程的, 但是这些守护线程不会影响jvm的关闭

守护线程的三个特性

  1. 线程的类型默认是继承自父线程的.(例如 ,我们自身写的代码, 创建的线程是继承自用户线程的, 因此我们的线程是用户线程. 守护线程创建的线程, 自动的就是守护线程. )
  2. 通常守护线程都是由jvm自动启动的. 而不是由用户去启动的.
  3. 守护线程不影响jvm的退出, 对于jvm而言, 只看有没有用户线程, 不看有没有守护线程.

守护线程与普通线程整体上无区别, 都是线程. 只是唯一的区别在于守护线程不会影响jvm的退出. 而普通线程会. 用户线程是执行逻辑的. 而守护线程是服务于我们的.

守护线程面试题

  1. 守护线程与普通线程的区别 . 上面已有答案.
  2. 是否须臾给线程设置为守护线程. (设置的方法为setDaemon(boolean on) 传入true)
    不应该把自己的线程, 设置为守护线程 , 因为可能设置成守护线程后, 该线程还没有执行完代码, 但是此时系统中,只剩下守护线程了, 就把该线程给关闭了. 导致数据丢失等后果.

你可能感兴趣的:(Java多线程基础与核心)