多线程06.thread守护线程

package chapter2;

public class Demo02 {
    public static void main(String[] args) {
Thread th1=new Thread(){
    @Override
    public void run() {
        //主线程
        Thread th2=new Thread(){

            //守护线程
            @Override
            public void run() {
                try {
                    Thread.sleep(1_000);
                    System.out.println("T thread finish done.");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

            }
        };
       // 当th1.setDaemon(true),即t为Daemon线程时,主线程结束,守护线程也结束
        th2.setDaemon(true);
        th2.start();
        try { while (true) {
            System.out.println("Do some thing for health check.");
            Thread.sleep(1_000);
        }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

    }
};
            th1.start();

    }
}

原文地址:https://www.cnblogs.com/q1359720840/p/10651699.html

时间: 2024-11-07 02:15:02

多线程06.thread守护线程的相关文章

Thread 守护线程 Thread.setDaemon详解

java中线程分为两种类型:用户线程和守护线程.通过Thread.setDaemon(false)设置为用户线程:通过Thread.setDaemon(true)设置为守护线程.如果不设置次属性,默认为用户线程. 用户线程和守护线程的区别: 1. 主线程结束后用户线程还会继续运行,JVM存活:主线程结束后守护线程和JVM的状态又下面第2条确定. 2.如果没有用户线程,都是守护线程,那么JVM结束(随之而来的是所有的一切烟消云散,包括所有的守护线程). 补充说明: 定义:守护线程--也称“服务线程

最简单的多线程并发与守护线程与join的运用

import threading import time def run(n): print("talk",n) time.sleep(3) #run("t1") #run("t2") t1=threading.Thread(target=run,args=("t1",)) t2=threading.Thread(target=run,args=("t2",)) #t1.start() #t2.start(

python基础 多线程threading join 守护线程setDeamon 递归锁Rlock

开篇大概介绍多线程与多进程区别,详细的理论区别自己可以在其它博客搜一下,这里不再赘述 同一进程下的多个线程共享内存数据,多个线程之间没有主次关系,相互之间可以操作:cpu执行的都是线程,默认程序会开一个主线程:进程是程序以及和程序相关资源的集合:某些场景下我们可以使用多线程来达到提高程序执行效率的目的,下面就多线程的一些基础知识做简要说明 简单的多线程 1 import threading, time 2 3 def test1(x): 4 time.sleep(5) 5 print(x**x)

从头认识多线程-1.17 守护线程setDaemon()

这一章节我们来讨论一下守护线程. 1.特性 守护线程是需要等待其他用户线程结束后才结束的线程,俗称保姆线程 2.源码解析 /** * Marks this thread as either a {@linkplain #isDaemon daemon} thread * or a user thread. The Java Virtual Machine exits when the only * threads running are all daemon threads. * * <p>

Java daemon thread 守护线程

守护线程与普通线程写法上基本么啥区别,在启动线程前, 调用线程对象的方法setDaemon(true),则可以将其设置为守护线程. 守护线程使用的情况较少,但并非无用,举例来说,JVM的垃圾回收.内存管理等线程都是守护线程.还有就是在做数据库应用时候,使用的数据库连接池,连接池本身也包含着很多后台线程,监控连接个数.超时时间.状态等等. public final void setDaemon(boolean on) 将该线程标记为守护线程或用户线程.当正在运行的线程都是守护线程时,Java 虚拟

多线程【Thread、线程创建】

主线程:执行主方法的线程,就叫做主线程 单线程程序:程序从mani开始从上到下依次运行 程序从main方法开始运行,JVM运行main方法,会找操作系统 开辟一条通向cpu的执行路径,cpu可以通过这条路径来执行main方法 这条路径有一个名字叫主(main)线程 创建线程方式一继承Thread类 实现步骤: 1.创建Thread类的子类 2.重写Thread类中的run方法,设置线程的任务 3.创建Thread类的子类对象 4.调用Thread类中的start方法开启一个新的线程,执行run方

java线程 - 多线程 - 守护线程

1.多线程可以实现Runnable接口或继承Thread,只能由Thread类的start()方法来启动一个线程 2.在Java中有两类线程:User Thread(用户线程).Daemon Thread(守护线程) 估计学过Unix开发但是没有细致学习Java的同学们会疑惑了,操作系统里面是没有所谓的守护线程的概念,只有守护进程一说,但是Java语言机制是构建在JVM的基础之上的,意思是Java平台把操作系统的底层给屏蔽起来,所以它可以在它自己的虚拟的平台里面构造出对自己有利的机制,而语言或者

守护线程以及要使用时注意的一点(Daemon Thread)

在Java中有两类线程:User Thread(用户线程).Daemon Thread(守护线程) Daemon的作用是为其他线程的运行提供便利服务,比如垃圾回收线程就是一个很称职的守护者.User和Daemon两者几乎没有区别,唯一的不同之处就在于虚拟机的离开:如果 User Thread已经全部退出运行了,只剩下Daemon Thread存在了,虚拟机也就退出了. 因为没有了被守护者,Daemon也就没有工作可做了,也就没有继续运行程序的必要了. 值得一提的是,守护线程并非只有虚拟机内部提供

关于java多线程中守护线程的理解

在java中有两类线程:User Thread(用户线程).Daemon Thread(守护线程) 守护线程并非只有虚拟机内部提供,用户在编写程序时也可以自己设置守护线程.下面的方法就是用来设置守护线程的. 1 Thread daemonTread = new Thread(); 2 3 // 设定 daemonThread 为 守护线程,default false(非守护线程) 4 daemonThread.setDaemon(true); 5 6 // 验证当前线程是否为守护线程,返回 tr