JAVA多线程番外篇 3、有一种线程的存在不是为了自己

【java多线程编程】三种多线程的实现方式 文章目录前言进程与线程继承Thread类,实现多线程FAQ 为什么多线程的启动不直接使用run()方法而必须使用Thread类中start()方法呢?基于Runnable接口实现多线程Thread 与 Runnable 的关系Callable实现多线程线程运行状态 前言       在java语言最大的特点是支持多线程的开发(也是为数不多... 阅读详情

1、有一种线程的存在不是为了自己

后台线程又称为“守护线程”或“精灵线程”。JVM的垃圾回收线程、数据库连接池的管理线程等都是典型的后台线程。如果所有的前台线程都死亡,后台线程会自动死亡。当整个JVM中只剩下后台线程时,程序就没有继续运行的必要了,虚拟机也就退出了。线程god 在后台持续守护运行,当life线程运行完毕,god线程也自动退出。

1.1 谁来杀死后台线程,什么时候杀死?

当最后一个非后台线程结束的时候,JVM会自动杀死所有标识为daemon的线程。而且在没有非后台线程的时候,这些后台线程就会被杀死。

注:如果后台线程创建新的线程,那么这些它的子线程都是后台线程。

public static void main(String[] args) {
        Thread life = new Thread(new Runnable() {
            @Override
            public void run() {
                for(int i=0;i<1000;i++) {
                    System.out.println("life is activing");
                }
            }
        });

        Thread god = new Thread(new Runnable() {
            @Override
            public void run() {
                for(;;) {
                    System.out.println("god is blessing");
                }
            }
        });

        life.start();
        god.setDaemon(true);
        god.start();

    }

运行结果:

life is activing
life is activing
life is activing
life is activing
life is activing
life is activing
life is activing
life is activing
life is activing
life is activing
life is activing
god is blessing
god is blessing
god is blessing
god is blessing
god is blessing
god is blessing
god is blessing
god is blessing
god is blessing

总结

有一种线程的存在不是为了自己

多线程系列在github上有一个开源项目,主要是本系列博客的实验代码。

https://github.com/forestnlp/concurrentlab

如果您对软件开发、机器学习、深度学习有兴趣请关注本博客,将持续推出Java、软件架构、深度学习相关专栏。

您的支持是对我最大的鼓励。

【屠龙之术】SAP 欧洲公司 高级合规性报表 FEC 所谓FEC ,其实是法国税务局要求法国的公司,每年要向税务局进行提交的税务报告,这个报告有特殊的格式,进行加密,法国公司要在收到税务局通知以后,及时进行报送,如果不报送,或者报送不合格文件,将面临5000欧的罚款。-----------------------------------------------进入正文----------------------------------------------------------------------有专门的T-code,PPT我就不贴了,我直接截图。 阅读详情

相关推荐

联想Win10改Win7设置BIOS指南

通过本文的指南,你应该能够成功地在联想Win10电脑上设置BIOS以支持Windows 7的安装和运行。尽管Windows 10提供了许多现代化的功能和改进,但如果你因特定需求而更倾向于使用Windows 7,那么本文提供的步骤将帮助你顺利实现这一转换。请记住,在更改操作系统前务必做好充分的准备工作,并在安装过程中保持耐心和细心。祝你安装顺利!

mmoo_python的博客 2039

JAVA面向对象学习——java多线程———控制线程——后台线程

后台线程 有一种线程,它是在后台运行的,它的任务是为其他的线程提供服务,这种线程被称为“后台线程(Daemon Thread)”,又称为“守护线程” 或“精灵线程”。 JVM的垃圾回收线程就是典型的后台线程。 后台线程有个特征:如果所有的前台线程都死亡,后台线程会自动死亡。 调用Thread对象setDaemon(true)方法可将指定线程...

小白龙白龙马的博客 451

Android 12高通thermal-engine调试实战:如何快速开启debug日志并解决CPU降频问题

本文详细介绍了Android 12高通thermal-engine的调试实战,包括如何快速开启debug日志、解读关键日志信息以及解决CPU降频问题。通过优化配置文件和调整温控策略,开发者可以有效提升设备性能,避免因温度管理导致的性能瓶颈。

i3j4k5的博客 307

Java 守护线程与用户线程

线程创建时默认为用户线程。 守护线程/后台线程/精灵线程: 将线程设置为后台线程: public final void setDaemon(boolean on) 注意: true为守护线程,false为用户线程,默认为false。 要设置线程为守护线程必须在启动线程之前。 可使用isDaemon()判断线程是否后台线程 如果所有的前台线程都死亡,后台线程也会自动死亡。 主线程默认是用户线程,用户线程的子线程默认是用户线程,守护线程的子线程默认是守护线程。 /* 用户线程:.

qq_57389269的博客 348

Zemax新手别慌!一文搞懂几何像差:从球差、慧差到色差的实战识别与优化

本文为Zemax新手提供几何像差实战指南,详细解析球差、彗差和色差的识别与优化方法。通过软件操作关键节点和实际项目决策逻辑,帮助光学设计师快速掌握像差诊断与优化技巧,提升光学设计效率。

weixin_42524708的博客 258

NVMe-MI --- Message Servicing Model(消息服务模型)

本文主要介绍NVMe-MI消息服务模型,两个主要类别是请求消息和响应消息。并介绍带外机制消息服务状态机。

智小星的博客 2014

Java多线程详解(一)Java多线程入门

最近听很多面试的小伙伴说,网上往往是一篇一篇的Java多线程的文章,除了书籍没有什么学习多线程的一系列文章。但是仅仅凭借一两篇文章很难对多线程有系统的学习,而且面试的时候多线程这方面的知识往往也是考察的重点,所以考虑之下决定写一系列关于Java多线程的文章。文章参考了高老师的《Java多线程编程核心技术》。力争使用最短的篇幅把Java多线程的知识作以系统的讲述。 本节思维导图: 思维导图...

刘成 2475

Qt界面美化-飞扬青云自绘控件插件的使用-避免采坑

1、先上一个集成到QtCreater中的效果图: 2、飞扬青云自绘控件插件下载地址:https://gitcode.net/mirrors/feiyangqingyun/qucsdk?utm_source=csdn_github_accelerator 3、集成插件到QtCreater中的方法: (1)、查看自己使用的QtCreater的版本信息,我的:Qt 5.15.2 MSVC2019 64位 (2)插件下载下来后工程预览: 我选择msvc版本的SDK,打开找到匹配的SDK:...

小米的修行之路 2793

Java多线程——认识线程

Java多线程初阶—— 认识线程

YumunaoDAII的博客 1631

手把手教你学PCIE(2.1.23)--PCIe基本概念:链路速率协商

链路速率协商是一个多步骤的过程,确保发送端和接收端之间的链路速率设置一致。通过初始化链路速率寄存器、发送和接收 TS2 序列、检测链路对端的存在、交换链路速率信息、确定最大链路速率和配置链路速率,可以确保 PCIe 设备之间的数据传输速度最大化,从而提高数据传输效率。初始化链路速率寄存器:设置支持的最大链路速率。发送和接收 TS2 序列:检测链路对端的存在。交换链路速率信息:发送和支持的最大链路速率。确定最大链路速率:选择最小值作为最终链路速率。配置链路速率:更新链路速率寄存器。

MHD0815的博客 1815

YOLOv11改进策略【模型轻量化】| 替换骨干网络为 2024轻量化网络MoblieNetV4:移动生态系统的通用模型

一、本文介绍 本文记录的是基于MobileNet V4的YOLOv11目标检测轻量化改进方法研究。MobileNet V4通过整合UIB、Mobile MQA以及优化的NAS策略,能够在在不降低性能指标的前提下,降低计算成本。本文配置了原论文中MNv4-Conv-S、MNv4-Conv-M、MNv4-Conv-L、MNv4-Hybrid-M和MNv4-Hybrid-L五种模型,以满足不同的需求。 模型 参数量 计算量 推理速度 YOLOv11m 20.0M 67.6GFLOPs 3.5ms

Limiiiing的博客 4458

Java多线程

多线程知识

m0_59961940的博客 1683

TC3XX - MCAL知识点(四十二):AURIX™ TC3xx实现多相电机需要多核配合使用的场景与实操分析

本文探讨了多相电机控制系统中的关键技术问题,重点分析了多核处理器在电机控制中的应用。针对十二相电机等复杂应用场景,提出了同步采样、多核协同等解决方案。文章详细阐述了相电流同步采样原理及EBTresos配置方法,分析了ADC硬件触发机制和多核配合策略。通过Core0和Core1的协同工作设计,解决了位置信息采集与FOC算法执行的时序问题,并提供了代码实现示例。实验验证了采用ATOM0_7同时触发两个核ADC中断的可行性,为多相电机控制系统的实现提供了技术参考。

梦想技术家 498

【Java多线程】Java多线程技能

到 1. 进程和多线程的概念及线程的优点 提到多线程这个技术就不得不提及“进程”这个概念,在“百度百科”中对进程的解释如下: 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。 进程是受操作系统管理的基本运行单元。 那什么是线程呢? 线程可以理解成是在

一定要站在自己热爱的生活里闪闪发光 4万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java番外篇3——线程池

Java番外篇3——线程池 1、多线程产生的问题 多次创建并销毁线程。而创建并销毁线程的过程势必会消耗内存 2、线程池 降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗 提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行 方便线程并发数的管控。因为线程若是无限制的创建,可能会导致内存占用过多而产生OOM,并且会造成cpu过度切换,影响性能 提供更强大的功能,延时定时线程池 3、名词解释 4、java线程池 Executors类提供了4种不同的线程

qq_43842093的博客 2273

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

《Java多线程编程核心技术》——多线程总结

第1章 Java多线程技能 本章主要介绍线程和进程的相关概念,多线程的实现和停止,以及Thread类中的核心方法,具体实现的代码可以参考《Java多线程编程核心技术》。 进程和线程 1.进程 一个可并发执行的具有独立功能的程序关于某个数据集合的一次执行过程,也是操作系统进行资源分配和保护的基本单位。简单的说,进程就是一个程序的一次执行过程。 2.引入线程的动机和思路 操作系统采用进程机制使得多任务...

weixin_39754631的博客 4185

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java技术——Java多线程学习

0.前言 转载请标明出处:http://blog.youkuaiyun.com/seu_calvin/article/details/52400927 学习多线程之前需要先了解以下几个概念。 进程:一般指一个程序运行时的实例,每个进程有自己独立的地址空间。一个进程无法直接访问另一个进程的数据。 线程:是CPU调度的最小单元,一个进程可以有很多线程,每条线程可以并行执行不同的任务。并且每个线程有独立的运...

关于Android开发的一些技术点总结 ╮( ̄▽ ̄”)╭ 1万+

Java多线程详解——一篇文章搞懂Java多线程

Java多线程详解 1. 基本概念 程序(program) 程序是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码(还没有运行起来),静态对象。 进程(process) 进程是程序的一次执行过程,也就是说程序运行起来了,加载到了内存中,并占用了cpu的资源。这是一个动态的过程:有自身的产生、存在和消亡的过程,这也是进程的生命周期。 进程是系统资源分配的单位,系统...

优快云_KONGlX的博客 3965

Java面试之多线程:Java创建多线程为什么只有一种方式?

在Java中实现线程的方式有几种呢?两种?三种?四种?五种?甚至更多?其实都不对。

2501_90472611的博客 499

多线程java、python

Java 多线程 java多线程 Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。 多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。 这里定义和线程相关的另一个术语 - 进程:一个进程包括由操作系统分配的内存空间,包含一个或多个线程。一个线程不能独立的存在,它必须是进程的一部分。一个进程一直运行,直到所有的非守护线程都结束运行后才能结束。 多线程能满足程序员编写高效率的程序来达到充分利用 CPU 的目的

weixin_46058146的博客 1040

JAVA多线程是什么

一、 什么是多线程: 我们现在所使用操作系统都是多任务操作系统(早期使用的DOS操作系统为单任务操作系统),多任务操作指在同一时刻可以同时做多件事(可以同时执行多个程序)。 多进程:每个程序都是一个进程,在操作系统中可以同时执行多个程序,多进程的目的是为了有效的使用CPU资源,每开一个进程系统要为该进程分配相关的系统资源(内存资源) 多线程:线程是进程内部比进程更小的执行单元(执行流|程序片段),每个线程完成一个任务,每个进程内部包含了多个线程每个线程做自己的事情,在进程中的所有线程共享该进程的资源; 主

qq_45022104的博客 4446

Java实现多线程

文章对Java多线程各个方面进行讲解,以几种经典的线程问题来讲述线程的通信和同步问题,以及线程的几种创建方法。

qq_56627079的博客 2489

java多线程

在计算机中,我们把一个任务称为一个进程,浏览器就是一个进程,视频播放器是另一个进程,类似的,音乐播放器和Word都是进程。某些进程内部还需要同时执行多个子任务。例如,我们在使用Word时,Word可以让我们一边打字,一边进行拼写检查,同时还可以在后台进行打印,我们把子任务称为线程。进程和线程的关系就是:一个进程可以包含一个或多个线程,但至少会有一个线程。操作系统调度的最小任务单位其实不是进程,而是线程。

m0_60301012的博客 775
上一篇: JAVA多线程设计模式篇 2、Single Threaded Execution 模式——这一刻,我的眼里只有你
下一篇: JAVA多线程设计模式篇 3、Immutable 模式——无欲则刚,练就金刚不坏之身
悟空学编程
博客等级 码龄12年 32粉丝 123原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟空学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值