Java守护线程「建议收藏」

Java守护线程「建议收藏」1、什么是守护线程Java线程分两种:用户线程和守护线程。守护线程,是指在程序运行的时,后台提供一种通用服务的线程。比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。反过来说,只要任何非守护线程还在运行,程序就不会终止。守护线程和用户线程的没有本质的区别,不同之处在于虚拟机的离开;若用户线程已全部退出运行,只剩守护线程存在,虚拟机也即退出。因没有了被守护者,守护线程也就无工作可做,也

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

1、什么是守护线程

Java线程分两种:用户线程和守护线程。

守护线程,是指在程序运行的时,后台提供一种通用服务的线程。比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。反过来说,只要任何非守护线程还在运行,程序就不会终止。

守护线程和用户线程的没有本质的区别,不同之处在于虚拟机的离开;若用户线程已全部退出运行,只剩守护线程存在,虚拟机也即退出。 因没有了被守护者,守护线程也就无工作可做,也就没有继续运行程序的必要了。

将线程转换为守护线程可以通过调用Thread对象的setDaemon(true)方法来实现。在使用守护线程时需要注意一下几点:

(1)thread.setDaemon(true)须在thread.start()之前设置,不能把正在运行的常规线程设置为守护线程,否则会抛出IllegalThreadStateException异常。

(2) 在Daemon线程中创建的新线程也是Daemon的。

(3) 守护线程应该永远不去访问固有资源,如文件、数据库,因为它会在任何时候甚至在一个操作的中间发生中断。

(4)java多线程编程,偏向使用java自带的多线程框架,比如ExecutorService,但是java的线程池会将守护线程转换为用户线程,所以如果要使用后台线程就不能用java的线程池。

2、代码示例

守护线程类

import lombok.SneakyThrows;

import java.text.SimpleDateFormat;
import java.util.Date;

public class DaemonRunnable implements Runnable {

    @SneakyThrows
    @Override
    public void run() {
        System.out.println("进入守护线程...");

        Integer count = 0;
        while (true) {
            count++;
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String time = sdf.format(new Date());
            System.out.println("当前:" + time + " | 守护线程进行中,目前计数至【" + count + "】");
            Thread.sleep(1000);
        }

    }
}

测试类

import java.util.Random;

public class DaemonTest {

    public static void main(String[] args) throws InterruptedException {
        // 守护线程在主线程操作完成后就会自动退出,所以不适合进行读写操作
        DaemonRunnable runnable = new DaemonRunnable();
        Thread thread = new Thread(runnable);
        thread.setDaemon(true);
        thread.start();

        Random random = new Random();
        Integer sec = random.nextInt(10);
        System.out.println("警告:" + sec + "秒后主线程退出");
        Thread.sleep(sec * 1000);
        System.out.println("警告:主线程宣告退出!");
    }

}

测试结果

进入守护线程...
警告:8秒后主线程退出
当前:2021-10-09 15:40:00 | 守护线程进行中,目前计数至【1】
当前:2021-10-09 15:40:01 | 守护线程进行中,目前计数至【2】
当前:2021-10-09 15:40:02 | 守护线程进行中,目前计数至【3】
当前:2021-10-09 15:40:03 | 守护线程进行中,目前计数至【4】
当前:2021-10-09 15:40:04 | 守护线程进行中,目前计数至【5】
当前:2021-10-09 15:40:05 | 守护线程进行中,目前计数至【6】
当前:2021-10-09 15:40:06 | 守护线程进行中,目前计数至【7】
当前:2021-10-09 15:40:07 | 守护线程进行中,目前计数至【8】
警告:主线程宣告退出!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/181538.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • MessageDigest简介

    MessageDigest简介本文博客原文参考文章:http://blog.sina.com.cn/s/blog_4f36423201000c1e.html一、概述java.security.MessageDigest类用于为应用程序提供信息摘要算法的功能,如MD5或SHA算法。简单点说就是用于生成散列码。信息摘要是安全的单向哈希函数,它接收任意大小的数据,输出固定长度的哈希值。关于信息

  • Shell if 条件判断

    Shell if 条件判断Shell 语言中的if条件一、if的基本语法:if[command];then   符合该条件执行的语句elif[command];then   符合该条件执行的语句else   符合该条件执行的语句fi二、文件/文件夹(目录)判断[-bFILE]如果FILE存在且是一个块特殊文件则为真。[-cFILE]如果FILE存在且是一个字特殊文件则为真。[-dD…

  • navicat premium 15 macos 激活码【2022最新】2022.02.18

    (navicat premium 15 macos 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.htmlFZP9ED60OK-eyJsa…

  • navicat premium 激活码_在线激活「建议收藏」

    (navicat premium 激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • lombok插件介绍「建议收藏」

    lombok插件介绍「建议收藏」Lombok项目是一个java库,它可以自动插入到编辑器和构建工具中,增强java的性能。不要再写另一个getter或equals方法,只要有一个注释,你的类就有一个功能齐全的构建器,自动记录变量等等。lombok插件大大减少了java开发的工作量,让程序员更加关注业务逻辑的实现。实现的方法举例:get/set/toString/equals/hashCode/无参构造函数/全参构造函数等。lombok插件注解@Data//data是lombok使用最多的注解,自动生成get/set/

  • 每一趟安心出行的背后,都有哪些黑科技?

    每一趟安心出行的背后,都有哪些黑科技?导读:寄托着满当当期待与希望的20年代第一个新年,让一场态势凶猛的新型冠状病毒压抑的连呼吸都变得艰难。但不同的是,这一次,我们共同的努力,都会让社会好得…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号