守护线程和非守护线程

Java的守护线程和非守护线程 原文地址:http://www.cnblogs.com/super-d2/p/3348183.html 最近重新研究Java基础知识,发现以前太多知识知识略略带过了,比较说Java的线程机制,在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) ,(PS:以前忽略了)。 用户线程:非守护线程包括常规的用户线程或诸如用于处理GUI事件 阅读详情

守护线程和非守护线程

直觉上来讲,守护线程和main相关

 Java中有两种线程,一种是用户线程,另一种是守护线程。

 用户线程是指用户自定义创建的线程,主线程停止,用户线程不会停止(另一条执行路径)

守护线程当进程不存在或主线程停止,守护线程也会被停止。

 

我们自己创建的线程叫 用户线程  如果主线程停止掉  不会影响用户线程(非守护线程) 

  Java中 不光有主线程还有GC线程

主线程销毁之后 GC线程也跟着一起销毁

用户线程和守护线程的适用场景


由两者的区别及dead时间点可知,守护线程不适合用于输入输出或计算等操作,因为用户线程执行完毕,程序就dead了,适用于辅助用户线程的场景,如JVM的垃圾回收,内存管理都是守护线程,还有就是在做数据库应用的时候,使用的数据库连接池,连接池本身也包含着很多后台线程,监听连接个数、超时时间、状态等。

 

主线程死掉后 就不需要回收垃圾了  主程序死掉了 进程挂了都    gc线程主要回收主线程里面的  有专门回收子线程垃圾的线程

 

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

总结:没有啥子线程时候,守护线程会被杀死,会退出

我总结了个小demo,大家可以跑一跑,就是个排列组合,大家看看怎么回事儿

主线程 守护线程 用户线程

三个 排列组合

看看效果 

package com.toov5.thread;


public class DaemonThread {
    public static void main(String[] args) {
         
       Thread thread =  new Thread(new Runnable() {
            public void run() {
                while (true) {
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    System.out.println("守护子线程");
                }                
            }
        } );
        thread.setDaemon(true);
        thread.start();
//        
//         new Thread(new Runnable() {
//                public void run() {
//                    while (true) {
//                        try {
//                            Thread.sleep(100);
//                        } catch (InterruptedException e) {
//                            e.printStackTrace();
//                        }
//                        System.out.println("非守护子线程1");
//                    }                
//                }
//            } ).start();
         
         new Thread(new Runnable() {
                public void run() {
                    for (int i=0;i<100;i++) {
                        try {
                            Thread.sleep(50);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        System.out.println("非守护子线程2");
                    }                
                }
            } ).start();
        
        
        for(int i=0; i<10;i++){
            try {
                Thread.sleep(100);
            } catch (Exception e) {
                // TODO: handle exception
            }
//            System.out.println("主线程");
        }
        System.out.println("主线程执行完毕!!!!!!!!!!!!!!!!");
        
    }
}

大家看看输出结果就明了了

 

AD20/Altium designer——如何进行DRC检查、冲突的错误如何改正 对于一个画完的PCB,我们常常需要进行DRC检查,确保板子的电器连接及制作工艺在设定规则的范围内,本篇将介绍如何对PCB进行后期DRC检查处理,确保电路板出现不必要错误。 1.DRC检查入口 2.DRC设置 3.错误分析 对于错误的内容,依据个人实际情况不同,其出现的原因都是因为与设计规则中的设定标准冲突,这里按遇到的错误进行修改讲解,其他错误同理。 4.常见错误分析及解决方法 (1) 解决方法:将未连接网络连接(... 阅读详情

相关推荐

基于WEB的报价管理系统的设计与实现

该系统采用B/S模式,后台运用SpringMVC和MyBatis搭建,利用MySQL数据库,来组织存储和管理数据,使用tomcat服务器向外提供服务。使用该系统对外有利于提高企业的综合竞争力,对内有利于提高成本管理和控制的水平,简化了报价流程、提高了工作效率、精简了报价机构,降低了成本。研究和掌握必要的信息采集和数据查询技术,是各个企业,事业单位信息化的一个重要标志。当前大多数企业采取的报价方式仍然是用EXCEL表格和人工的方式,这不仅不利于大量数据的总结,更不利于对销售利润的控制。

m0_60918862的博客 999

java线程和线程池的使用

上面已经看过了可以在代码中直接新起线程,如果我们在主线程中新起一百个线程,让这一百个线程同时工作,逻辑上是没有任何问题的,但是这样做对系统资源的开销很大,这样会在短时间内处理很多的任务,当然包括新起线程等等。当主线程结束,但是子线程(默认是非守护线程)还没结束,所以虚拟机是不停止运行的,当子线程运行完以后,如果主线程也运行完毕,将线程池的封装,我们拿到的线程池的线程其实是一个包含线程任务的执行器,只需要调运执行器的执行方法,就会自动执行我们线程中的任务。通过上面的例子,也看到了计划任务线程池的使用方式。

sun13212715744的博客 540

几款支持国标GB28181的平台以及视频监控设备接入的配置方法(Web端无插件播放)

GB28181解决的一个主要问题就是如何远程、跨网络、跨区域、跨级别的访问网络中的监控设备(包括IPC、NVR等),本文介绍几款G28181平台的接入配置方法,适合有监控视频摄像头的远程接入和预览需求的人群参考使用。

一名高级工程师的博客 1万+

Linux下SpringBoot项目的启动(设置为守护线程)

在部署SpringBoot项目中发现,在运行jar包只后,关闭终端会导致项目的关闭,及线程和终端之间绑定,在遇到这种情况下,只需要通过nohup命令进行运行即可 nohup java -jar xxxxxxx.jar &gt;temp.log &amp; 运行此代码可以在终端关闭的情况下,使其继续运行,temp.log为此程序运行中产生的日志文件 ...

咸鱼塘 3908

Grok 3国内怎么用?超详细使用指南+实用指令模板

主要是用于快速分析学术论文,提取关键信息,总结研究成果。Analyze the following research paper: [粘贴或上传论文内容]1. Extract key findings, methodologies, and conclusions. (提取主要发现、方法和结论。2. Identify statistical significance and data points. (识别统计显著性和数据点。

Survivor_sl的博客 1万+

计算机考研常见面试题

写在前面 本人参加20考研,由于复试没有具体要求会问哪几门课,所以我就找了网上一些常见的计算机专业的面试题,整理如下 主要结构: 数据库 软件工程 操作系统 计算机组成原理 计算机网络 数据结构 C++ Java 数据库 1、数据:数据库中存储的基本对象。 数据库:长期存储在计算机内的、有组织的、可共享的数据集合。 数据库管理系统:专门用于建立和管理数据库的一套软件。对外部程序提供访问数据库的方法,对内进行数据管理。 数据库系统:与和数据库相关的整个系统,一般由数据库、数据库管理系统、应用程序、数

qq_38841618的博客 2万+

主线程、守护线程、非守护线程

主线程 main,但不是守护线程。 守护线程 是指在程序运行的时候在后台提供一种通用服务的线程。如gc。 非守护线程 也叫用户线程,由用户创建。 关系: 主线程和守护线程一起销毁; 主线程和非守护线程互不影响。 例如: package com.peng.thread; /** * 1、用户线程(非守护线程)有主线程创建 * 2、守护线程和主线程一起销毁 * @auth...

NeiFen的博客 7890

3D 结构光相机工作原理全解 | 从编码投射到三维重建,原理 + 代码 + 工业实战一站式掌握

本文从3D结构光相机的整体架构出发,层层拆解了编码投射、相位计算、相位解包裹、三维重建的核心原理,补充了工业实战所需的公式推导、代码实现、参数调优、设备选型和案例落地,核心总结如下:相位是3D结构光成像的“灵魂”,其精度、稳定性直接决定3D重建的效果,包裹相位与绝对相位的区分的是工业实战的基础;编码投射的核心是“正弦条纹+格雷码条纹”组合,正弦条纹负责高精度相位提取,格雷码条纹辅助解包裹,适配工业场景的精度与稳定性需求;

getusushu的博客 414

Linux以守护线程的方式运行SpringBoot的项目

情景 使用SpringBoot的开发的项目可以是war包也可以是jar包,根据需求可以打包成相应的格式,今天记录一下在打jar包的情况下如何让其以守护线程的方式来运行。干货 $ nohup java -jar yourackage-version.jar >temp.log & 该指令会让你先要执行的程序在后台运行,并且在你关闭或者推出当前ssh连接式不挂起或者关闭。指令解读 no

Banboll 斑驳 7034

【光子AI / Photon.AI】manus 通用 Agent 的实现核心技术原理与应用

摘要 Manus是一款由国内团队开发的通用AI Agent,其核心技术原理基于多智能体协作架构、云端全能沙箱、规划-执行-反思循环等系统工程方法。与传统的对话式AI不同,Manus能够在独立的Linux虚拟机环境中自主规划并执行复杂任务,通过编写和运行代码来解决问题,具备强大的纠错能力和工具使用能力。 核心应用场景包括深度行业研究、自动化办公、生活助理、辅助编程和跨平台信息整合等。Manus的工程化落地优势体现在沙箱环境、多智能体调度和容错机制等方面,使其能够完成需要多步骤操作和多种工具调用的复杂任务,将A

AI天才研究院 667

药物对接仿真软件:HADDOCK_(5).HADDOCK中蛋白质-配体对接流程

半柔性能量最小化阶段是在刚体能量最小化的基础上,允许配体的部分柔性,通过优化配体的构象来进一步提高对接的准确性。半柔性能量最小化阶段是在刚体能量最小化的基础上,允许配体的部分柔性,通过优化配体的构象来进一步提高对接的准确性。如果是PDB格式,确保文件包含所有必要的原子信息。对接完成后,HADDOCK会生成一系列的输出文件,包括对接后的蛋白质-配体复合物结构文件、能量评分文件和统计分析文件。对接完成后,HADDOCK会生成一系列的输出文件,包括对接后的蛋白质-配体复合物结构文件、能量评分文件和统计分析文件。

kkchenjj的博客 1081

Spring boot 守护线程

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34060741的博客 4611

vue接入海康4G版摄像头通过萤石云平台推送视频流教程

vue-video-player接入海康视频,videojs-contrib-hls,vue播放视频

renkai721的专栏 7278

Java中的守护线程和非守护线程

Java中有两类线程: User Thread(用户线程) Daemon Thread(守护线程) 守护线程也叫后台线程, 指的是程序在运行的时候后台提供一种通用服务的线程, 比如jvm中垃圾回收线程, 这种线程并不属于程序中不可或缺的部分. 因此当所有非守护线程结束时, 程序也就终止了, 同时会杀死进程中所有的守护线程. 反过来说, 只要有任何非守护线程在运行, 程序就不会终止. 守护线程...

weixin_43235210的博客 1171

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

关于守护线程和非守护线程

任何创建的一个线程,我们可以让它成为守护线程,也可以让它成为非守护线程。 创建一个守护线程代码如下:Thread t = new Thread()t.setDaemon(true);t.start();  创建一个非守护线程代码如下: Thread t = new Thread()t.start();  案例一 public static void

yl_zxy_ccssddnn_net的专栏 1121

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

python守护线程和非守护线程_Java的守护线程与非守护线程

守护线程与非守护线程最近在看多线程的Timer章节,发现运用到了守护线程,感觉Java的基础知识还是需要补充。Java分为两种线程:用户线程和守护线程所谓守护线程是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因 此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。反过来说,只要任何非守护...

weixin_39980809的博客 143

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

守护线程和非守护线程区别

守护线程和非守护线程区别

进阶的小橙子 566

并发编程——并发基础:守护线程和非守护线程

前言 最近在复习的时候,发现一个运行线程池拒绝策略demo中的main方法在运行了之后,进程并没有关闭。看了jconsole线程池中的线程都处于waiting状态。这里是跟我设置线程池的线程工厂中的设置线程是否为后台线程有关。 后台线程和非后台线程 后台线程,也叫守护线程,指的是在程序运行的时候后台提供一种通用服务的线程,比如jvm里垃圾回收线程,这种线程并不属于程序中不可或缺的部分。因此,当所有...

zlj1217的博客 1738

python守护线程和非守护线程_守护线程和非守护线程区别

该楼层疑似违规已被系统折叠隐藏此楼查看此楼【笔记】Python中多线程的两种方式以及setDeamon守护线程原理 转载 2015-06-10 03:09:37一般Python中的多线程操作有两种方式:函数式(thread)和继承(threading...

weixin_39758618的博客 505

守护线程和非守护线程的区别?

一、什么是守护线程 二、守护线程的作用及应用场景 一、什么是守护线程 守护线程相对于正常线程来说,是比较特殊的一类线程! JVM 程序在什么情况下能够正常退出? The Java Virtual Machine exits when the only threads running are all daemon threads. 上面这句话来自 JDK 官方文档,意思是: 当 J...

qq_31741189的博客 4768
上一篇: 多线程快速入门
下一篇: 多线程的运行状态
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值