首页 > 其他分享 >守护线程

守护线程

时间:2023-03-30 15:34:52浏览次数:31  
标签:count Thread 线程 JVM 终止 守护

守护线程定义:所谓守护线程,是指在程序运行的时候在后台提供一种通用服务的线程。比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。

因此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。反过来说,只要任何非守护线程还在运行,程序就不会终止。

/**
 * @author wsy
 */
public class DaemonThreadDemo {
    public static void main(String[] args) {
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                int count = 0;
                for (int i = 0; i < 100; i++) {
                    count += i;
                }
                //不会打印的输出 守护线程为用户线程服务 用户线程终止守护线程自动终止
                System.out.println("count的值为: " + count);

            }
        });

        thread.setDaemon(true);
        thread.start();
        System.out.println("main线程终止 jvm退出");
    }




}

 

守护线程的特点

  • 守护线程是运行在程序后台的线程;
  • 守护线程创建的线程,依然是守护线程;
  • 守护线程不会影响 JVM 的退出,当 JVM 只剩余守护线程时,JVM 进行退出;
  • 守护线程在 JVM 退出时,自动销

标签:count,Thread,线程,JVM,终止,守护
From: https://www.cnblogs.com/shaoyongwang/p/17272914.html

相关文章

  • C#:多线程
    在C#中,多线程是一种非常常见的编程方式,它可以提高程序的并发性和响应性。但是,多线程编程也是一种比较复杂的编程方式,需要开发者具备一定的经验和技能。本文将介绍C#中多......
  • future.get()处理多个线程的java例子
    一种代码示例是使用ExecutorService类的submit()方法提交多个Callable任务,并返回多个Future对象,然后在主线程中循环调用Future对象的get()方法获取结果,并进行汇总1。代码......
  • 多线程源码_三菱plc+卡+串口上位机
    多线程源码_三菱plc+卡+串口上位机1,采用C#编程。2,上位机采用RS232串口通信链接plc。3,PLC为三菱。4,研华采集卡,采集压装电压。5,曲线判据自定义。6,每天作业......
  • 线程池
    线程池的生命周期,总共有五种状态RUNNING :能接受新提交的任务,并且也能处理任务队列中的任务;SHUTDOWN:关闭状态,不再接受新提交的任务,但却可以继续处理阻塞队列中已保存的......
  • 两个线程交替打印 0~100 的奇偶数
     importthreadingclassPrintThread(threading.Thread):def__init__(self,start_num,step,max_num):super(PrintThread,self).__init__()......
  • 【Redis】多线程Redis的N种架构
    【Redis】多线程Redis的N种架构为什么需要多线程的Redis在单点上利用更多的资源--热点资源官方的多线程只看左边部分其实还是单线程的形式,设置io Thread的数量==》......
  • java线程池详解
    为什么要使用线程池ExecutorService利用池化线程执行任务,Executors的工厂方法可以创建线程池线程池解决了两个问题:减少每个线程创建消耗的时间,复用线程提供管理线程,资......
  • 多线程 互斥锁与读写锁 概念
    一、多线程lock互斥锁简述多线程环境中,不使用lock锁,会形成竞争条件,导致A线程与B线程数据使用冲突。使用lock锁可以保证当有线程操作某个共享资源时,能使该代码块按照指......
  • 多线程socketserver
    模块:socketservertcp协议:服务端:importsocketserverclassMyRequestHandle(socketserver.BaseRequestHandler):defhandle(self):#print(self.request)#......
  • c++11 std::thread 线程实例在退出后管理线程调用join()后再新建线程将可能会产生相同
    [03-2816:52:54.372][info][vthread.cpp:92operator()()]createnewthread,id:4,tid:7f5cbb7fd640,inroduce:testvthread003[03-2816:52:54.372][info][vthread......