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

    守护线程:

    线程分为用户线程和守护线程,当用户线程执行完毕后,程序就会结束,JRE判断程序是否执行结束的标准是所有的前台执线程行完毕了,而不管后台线程的状态 ,后台线程就是用来服务其他线程的线程,thread.setDaemon(true)必须在thread.start()之前设置;

    执行情况

    主线程(main)执行结束后,用户线程可以继续执行直至执行完毕;用户线程执行完毕后,守护线程立刻结束;

    总结

    • 守护线程,它的生死无关重要,却依赖整个进程而运行;哪天其他线程结束了,整个程序就结束了,理都没理守护线程,就把它中断了;
    • 如果守护线程自己识时务,自己早点执行完毕,那就自己早点结束;整个程序也不必因此而挽留它;
    • 注意: 由于守护线程的终止是自身无法控制的,因此千万不要把IO、File等重要操作逻辑分配给它;因为它不靠谱。

    那么守护线程的作用是什么?

    1. 举例, GC垃圾回收线程:就是一个经典的守护线程,当我们的程序中不再有任何运行的Thread,程序就不会再产生垃圾,垃圾回收器也就无事可做,所以当垃圾回收线程是JVM上仅剩的线程时,垃圾回收线程会自动离开。它始终在低级别的状态中运行,用于实时监控和管理系统中的可回收资源。
    2. 应用场景:(1)来为其它线程提供服务支持的情况;(2) 或者在任何情况下,程序结束时,这个线程必须正常且立刻关闭,就可以作为守护线程来使用;反之,如果一个正在执行某个操作的线程必须要正确地关闭掉否则就会出现不好的后果的话,那么这个线程就不能是守护线程,而是用户线程。通常都是些关键的事务,比方说,数据库录入或者更新,这些操作都是不能中断的。

    转:https://blog.csdn.net/weixin_40087231/article/details/90031253

  • 相关阅读:
    启动 YARN 并运行 MapReduce 程序(伪分布式模式)
    启动 HDFS 并运行 MapReduce 程序(伪分布式模式)
    简单计算器(stack)
    Linux定时发邮件脚本
    HttpClient接口调用-客户端
    获取时间字符串
    Visual Assist代码高亮突然失效
    批量快速生成员工文件夹工具
    日语学习笔记整理(汉译日)
    有关使用PLSQL Developer时出现报错ora-12514解决的方法
  • 原文地址:https://www.cnblogs.com/brxHqs/p/13559625.html
Copyright © 2011-2022 走看看