iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java语言守护线程DaemonThread使用示例详解
  • 201
分享到

Java语言守护线程DaemonThread使用示例详解

Java守护线程DaemonThreadJava守护线程 2022-11-13 18:11:06 201人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录守护线程用户线程设为守护线程守护线程 在Java语言中有两类线程:用户线程和守护线程。我们通俗的讲,任意一个守护线程都是整个JVM中所有线程的"大管家";只要

守护线程

在Java语言中有两类线程:用户线程和守护线程。我们通俗的讲,任意一个守护线程都是整个JVM中所有线程的"大管家";只要当前Java虚拟机中还有任意一个非守护线程没有结束,它们的守护线程就不能结束,要持续工作;只有当最后一个非守护线程结束时,守护线程才随着Java虚拟机一起结束工作。

  • 其作用就是为其他线程的运行提供服务,就像是一个护道者,保证其他线程的顺利运行

用户线程设为守护线程

我们将用户线程设为守护线程的办法就是Thread类的setDaemon(true)方法。 假设我们创建一个线程t,然后我们将它设为守护线程,这时我们就应该注意:

  • 守护线程应该永远不会去访问系统资源(比如数据库、文件等),因为它会在任何时候甚至正在进行某种操作时发生中断。
  • 守护线程在运行期间定义并由守护线程创建的线程,都自然而然地是守护线程
  • t.setDaemon(true)必须在t.start()之前调用,否则会发生IllegalThreadStateException异常。原因是不能把正在运行的常规线程设为守护线程
  • 代码示例
    public class SubThread extends Thread{
        int u1,v1;
        int result=0;
        //构造方法
        public SubThread(String name){
            super(name);
            //随机产生0~100以内的整数
            u1=(int)(Math.random()*100);
            v1=(int)(Math.random()*100);
        }
        @Override
        public void run() {
            //如果没有最大公约数,就进行计算
            if (result==0){
                result=this.getMaxCommonDivisor();
                System.out.println ("运行····"+this);
                while (true){
                    Thread.yield ();  //暂停当前线程,执行其他线程
                }
            }
        }
        //得到最大公约数
        public int getMaxCommonDivisor() {
            int u=u1,v=v1,r=u;
            while (r!=0){
                u=v;
                v=r;
                r=u%v;
            }
        return v;
        }
        @Override
        public String toString() {
            String msg;
            msg="threadName:"+this.getName ()+", ahead(优先级):"+getPriority ();
            String msg1=this.isDaemon ()?",守护线程:" :"用户线程";
            msg=msg+msg1+".["+u1+","+v1+"的最大公约数是"+result+"]";
            return msg;
        }
    }

注意: public int getMaxCommonDivisor():该方法是为了得到u1、v1的最大公约数

以上就是Java 语言守护线程 Daemon Thread使用示例详解的详细内容,更多关于Java 守护线程Daemon Thread的资料请关注编程网其它相关文章!

--结束END--

本文标题: Java语言守护线程DaemonThread使用示例详解

本文链接: https://www.lsjlt.com/news/169788.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java语言守护线程DaemonThread使用示例详解
    目录守护线程用户线程设为守护线程守护线程 在Java语言中有两类线程:用户线程和守护线程。我们通俗的讲,任意一个守护线程都是整个JVM中所有线程的"大管家";只要...
    99+
    2022-11-13
    Java 守护线程Daemon Thread Java 守护线程
  • Java语言多线程终止中的守护线程实例
    Java中线程分为两种类型:用户线程和守护(服务)线程。通过Thread.setDaemon(false)设置为用户线程;通过Thread.setDaemon(true)设置为守护线程;不设置则默认为用户线程。结束单线程用 Thread.i...
    99+
    2023-05-30
  • Java并发中守护线程的示例分析
    今天就跟大家聊聊有关Java并发中守护线程的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在Java中有两类线程:用户线程 (User Thread)、守护线程 (Daemo...
    99+
    2023-06-17
  • java高并发的用户线程和守护线程详解
    目录程序只有守护线程时,系统会自动退出设置守护线程,需要在start()方法之前进行线程daemon的默认值总结守护线程是一种特殊的线程,在后台默默地完成一些系统性的服务,比如垃圾回...
    99+
    2024-04-02
  • Java中守护线程介绍及使用
    目录一、什么是守护线程二、为什么需要守护线程三、如何使用注意:总结一、什么是守护线程 在说守护线程之前,我们先说一下什么是用户线程。 用户线程:我们平常创建的普通线程。守护线程(即 ...
    99+
    2024-04-02
  • 怎么在java中使用守护线程
    这期内容当中小编将会给大家带来有关怎么在java中使用守护线程,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了面...
    99+
    2023-06-14
  • Java中用户线程与守护线程如何使用
    本篇内容介绍了“Java中用户线程与守护线程如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.默认用户线程Java 语言中无论是线程...
    99+
    2023-06-30
  • Java中用户线程与守护线程的使用区别
    目录1.默认用户线程2.主动修改为守护线程2.1 设置线程为守护线程2.2 设置线程池为守护线程3.守护线程 VS 用户线程3.1 用户线程3.2 守护线程3.3 小结4.守护线程注...
    99+
    2024-04-02
  • .Net Core 进程守护之Supervisor使用详解
    目录介绍supervisor1、执行下列命令安装supervisor2、安装完成之后,我们到配置目录去添加两个配置文件 3、启动Supervisor4、Supervisor...
    99+
    2024-04-02
  • 怎么理解java高并发的用户线程和守护线程
    这篇文章主要讲解了“怎么理解java高并发的用户线程和守护线程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解java高并发的用户线程和守护线程”吧!守护线程是一种特殊的线程,在后台默...
    99+
    2023-06-25
  • Java中四种线程池的使用示例详解
    在什么情况下使用线程池? 单个任务处理的时间比较短 将需处理的任务的数量大使用线程池的好处: 减少在创建和销毁线程上所花的时间以及系统资源的开销 如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以及”过度切换”。 本文详细的给...
    99+
    2023-05-31
    java 线程池 ava
  • 如何进行Java中守护线程的分析及使用
    这篇文章跟大家分析一下“如何进行Java中守护线程的分析及使用”。内容详细易懂,对“如何进行Java中守护线程的分析及使用”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“如何进行J...
    99+
    2023-06-26
  • C#多线程Thread使用示例详解
    本文实例为大家分享了C#多线程Thread使用的示例代码,供大家参考,具体内容如下 多线程: 线程生命周期状态图: C#线程优先级(概率高低): 基本使用示例: usin...
    99+
    2024-04-02
  • C语言数据结构线性表教程示例详解
    目录线性表顺序表线性表 数据结构里我们时常看到什么什么表,线性表是最基本、最简单、也是最常用的一种数据结构,其他各种表的万恶之源就是这个线性表,他是个啥其实顾名思义: 一个线性表是n...
    99+
    2024-04-02
  • R语言绘制line plot线图示例详解
    目录Step1. 绘图数据的准备Step2. 绘图数据的读取Step3. 绘图所需package的安装、调用Step4. 绘图最近小仙同学在Nature Cell Biology上看...
    99+
    2024-04-02
  • C语言指针教程示例详解
    目录指针内存指针类型指针运算二级指针指针数组指针 指针提供了对地址操作的一种方法,因此,使用指针可使得 C 语言能够更高效地实现对计算机底层硬件的操作。另外,通过指针可以更便捷地操作...
    99+
    2024-04-02
  • Go语言中循环语句使用的示例详解
    目录一、概述1. 循环控制语句2. 无限循环二、Go 语言 for 循环1. 语法2. for语句执行过程3. 示例4. For-each range 循环三、循环嵌套1. 语法2....
    99+
    2024-04-02
  • Java多线程编程基石ThreadPoolExecutor示例详解
    目录前言为什么用线程池参数介绍核心线程数和最大线程数设置使用示例线程池执行任务的流程线程池执行流程图源码解读基础属性和变量execute(Runnable command)addWo...
    99+
    2023-05-16
    Java多线程ThreadPoolExecutor Java ThreadPoolExecutor
  • Java InheritableThreadLocal使用示例详解
    目录引子InheritableThreadLocal简单使用InheritableThreadLocal原理分析引子 public class InheritableThreadLo...
    99+
    2024-04-02
  • Rust语言中的String和HashMap使用示例详解
    目录String新建字符串更新字符串使用 + 运算符或 format! 宏拼接字符串索引字符串字符串 slice遍历字符串HashMap新建 HashMapHashMap 和 own...
    99+
    2022-11-13
    Rust String HashMap使用 Rust String HashMap
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作