当前位置: 首页 > article >正文

从0开始理解并发、线程与等待通知机制(中)

线程启动与终止线程启动方式继承Thread类并重写run()方法。实现Runnable接口并交给Thread执行。线程终止方式不建议使用stop()方法因其具有强制性可能导致资源未正确释放。推荐使用中断机制调用interrupt()方法设置中断标志位。线程生命周期详解线程状态分类新建态New线程对象创建但尚未启动。就绪态Runnable线程等待CPU调度。运行态Running线程正在执行。阻塞态Blocked等待获取锁。等待态Waiting无限期等待唤醒。超时等待Timed Waiting有限时间内等待唤醒。终止态Terminated线程执行完毕。线程状态转换图解通过一张图清晰展示线程状态之间的转换关系。线程调度机制协同式与抢占式协同式调度线程主动让出CPU使用权。缺点可能导致其他线程“饿死”。抢占式调度由操作系统决定何时让出CPU。优点资源利用率更高避免线程长期占用CPU。Java线程实现模式三种线程实现方式内核线程实现1:1每个线程对应一个操作系统线程。优点无需自行管理调度。缺点系统调用开销大线程数量受限。用户线程实现N:1多个线程映射到一个操作系统线程。优点线程切换快开销低。缺点缺乏操作系统支持难以实现阻塞操作。混合实现M:N用户线程与操作系统线程按比例映射。兼顾性能与调度灵活性。Java线程实现Java早期采用用户线程实现。JDK 1.2后改为内核线程实现HotSpot VM。线程优先级映射受操作系统限制实际效果不明显。协程Coroutine简介协程定义协程是一种轻量级线程由语言层面实现也称为“用户线程”。协程优势资源消耗低单个协程仅占几百字节。支持大规模并发数十万协程同时运行。协程适用场景IO密集型任务如网络请求、文件读写。不适用于计算密集型任务协程切换成本低于线程但在计算任务中无明显优势。Java中的协程实现使用第三方库如Kotlin协程、Quasar。JDK 19引入虚拟线程预览版未来将在JDK 21正式发布。守护线程Daemon Thread守护线程作用在后台执行支持性工作如垃圾回收、信号监听。与非守护线程区别当所有非守护线程结束时JVM自动退出守护线程随之终止。守护线程不负责资源释放不适合执行关键清理工作如文件关闭、解锁。线程间通信与协调线程间通信机制Java提供管道流PipedInputStream/PipedOutputStream实现线程间数据传输。字节流处理二进制文件字符流处理文本文件。线程协作案例顺序执行控制问题描述确保T2在线程T1执行完后执行T3在T2执行完后执行。解决方案使用join()方法。javat1.start(); t1.join(); // T2等待T1执行完 t2.start(); t2.join(); // T3等待T2执行完 t3.start();线程上下文切换与性能优化线程上下文切换类型线程调度切换。系统调用切换如IO读写、获取系统时间。中断切换。优化建议减少不必要的线程上下文切换。避免频繁系统调用如减少System.currentTimeMillis()的使用。使用异步日志输出等方式降低同步阻塞影响。线程池配置建议线程池大小配置原则计算密集型任务线程数 ≈ CPU 核心数。IO密集型任务线程数 ≈ CPU 核心数 × 2需根据具体测试调整。

相关文章:

从0开始理解并发、线程与等待通知机制(中)

线程启动与终止 线程启动方式 继承 Thread 类并重写 run() 方法。实现 Runnable 接口并交给 Thread 执行。 线程终止方式 不建议使用 stop() 方法,因其具有强制性,可能导致资源未正确释放。推荐使用中断机制:调用 interrupt() 方法&#xf…...

CLIP-GmP-ViT-L-14企业级部署:基于VMware虚拟化环境的高可用架构

CLIP-GmP-ViT-L-14企业级部署:基于VMware虚拟化环境的高可用架构 如果你在企业里负责IT运维或者系统架构,最近可能正琢磨着怎么把那些厉害的AI模型,比如CLIP-GmP-ViT-L-14这种能看懂图片又能理解文字的模型,给稳稳当当地跑起来。…...

ESXi虚拟化实战:如何用Web界面5分钟快速部署Ubuntu Server虚拟机

ESXi虚拟化实战:5分钟极速部署Ubuntu Server全指南 当你需要在企业内部快速搭建一套开发测试环境,或是为临时项目部署隔离的沙箱系统时,传统物理服务器的采购和配置流程显然无法满足时效需求。这正是ESXi这类企业级虚拟化平台展现价值的时刻—…...

电力系统动态无功补偿技术:基于MATLAB/Simulink仿真的静止无功发生器SVG与控制策...

电力系统动态无功补偿 MATLAB,simulink仿真 静止无功发生器SVG SVPWM控制,ip-iq瞬时无功电流检测,电压PI外环,电流PI内环控制。 三类负载,阻感性,阻容性,谐波负荷在电力系统中,动态无…...

突破语言壁垒:FigmaCN插件的本地化技术架构与实践指南

突破语言壁垒:FigmaCN插件的本地化技术架构与实践指南 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 一、问题诊断:中文设计师的效率困境与量化分析 1.1 设计流…...

Win10安装EMQX保姆级教程:解决‘Unable to load emulator DLL‘报错(附Erlang/OTP下载加速)

Win10安装EMQX全流程指南:从Erlang配置到MQTT服务搭建 在物联网和实时消息传递领域,EMQX作为一款高性能的MQTT消息代理服务器,已经成为开发者构建分布式物联网平台的首选工具之一。然而,对于Windows平台的新手开发者来说&#xff…...

数字孪生场景能否私有化部署,数据安全如何实现可靠保障

数字孪生在智慧城市、工业制造、建筑可视化等领域快速落地,企业在选型时普遍关注两个核心问题,一是数字孪生场景能否实现私有化部署,二是数据安全能否得到稳定保障。实时渲染作为数字孪生呈现的核心支撑,部署模式与安全能力直接决…...

【LPDDR5深度解析】--- 从引脚定义看架构演进与设计考量

1. LPDDR5与LPDDR4X的架构差异全景图 当我们把LPDDR5和LPDDR4X的芯片放在显微镜下观察时,最先冲击视觉的就是引脚布局的显著变化。这种物理层面的改变绝非偶然,而是内存架构师们为突破性能瓶颈所做的精心设计。以最常见的4GB容量为例,LPDDR4X…...

3分钟掌握艾尔登法环存档迁移:开源工具让游戏进度永不丢失 ⚔️

3分钟掌握艾尔登法环存档迁移:开源工具让游戏进度永不丢失 ⚔️ 【免费下载链接】EldenRingSaveCopier 项目地址: https://gitcode.com/gh_mirrors/el/EldenRingSaveCopier 还在为艾尔登法环存档损坏而烦恼吗?当数百小时的游戏进度因为一次意外而…...

Thorium浏览器:让网页浏览速度提升30%的开源性能优化方案

Thorium浏览器:让网页浏览速度提升30%的开源性能优化方案 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Windows and MacOS/Raspi/Android/Special builds are in different repositories, links are towards the top of the RE…...

ElasticSearch 数据清理全攻略:从单文档到批量删除

1. 初识ElasticSearch数据清理 第一次接触ElasticSearch的数据清理功能时,我踩过不少坑。记得有次不小心把生产环境的索引删了,差点酿成大祸。从那以后,我就特别重视数据清理这个看似简单实则暗藏玄机的操作。 ElasticSearch提供了多种数据清…...

嵌入式PWM蜂鸣器驱动库:轻量、确定、可移植的压电发声方案

1. 项目概述beep_sound是一个面向嵌入式微控制器的轻量级音频驱动库,专为通过 PWM(脉宽调制)信号直接驱动压电蜂鸣器(Piezoelectric Buzzer)而设计。其核心目标是在资源受限的 MCU 环境下,以极低的代码体积…...

如何快速配置高效的反撤回插件:QQNT防撤回完整使用教程

如何快速配置高效的反撤回插件:QQNT防撤回完整使用教程 【免费下载链接】LiteLoaderQQNT-Anti-Recall LiteLoaderQQNT 插件 - QQNT 简易防撤回 项目地址: https://gitcode.com/gh_mirrors/li/LiteLoaderQQNT-Anti-Recall 在当今快节奏的在线沟通中&#xff0…...

传送带突然加速?PLC程序员的翻车现场

基于PLC1200与Factory IO设计的模拟工厂设计 TIA Portal V15.1与Factory IO联机仿真运行系统(不用实物PLC)入下图: 1、有设计程序和仿真环境; 2、有演示视频。前两天在调试Factory IO的立体仓库模型时,传送带突然像脱缰…...

Spring Boot 自动配置 2.0 深度解析(七):从 spring.factories 到 @AutoConfiguration 的范式转移

Java 新纪元 — JDK 25 + Spring Boot 4 全栈实战 | Day 07 上一篇:[D6 Spring Boot 4 架构巨变解析] | 下一篇:[D8 响应式全家桶升级] 引子:一个让整个 Spring 生态颤抖的注解 2013 年,Spring Boot 用 spring.factories + @EnableAutoConfiguration 一套组合拳干掉了 XML…...

nlp_seqgpt-560m与YOLOv8结合应用:智能图像文本联合分析系统

nlp_seqgpt-560m与YOLOv8结合应用:智能图像文本联合分析系统 1. 引言 想象一下这样的场景:你拿到一张产品宣传海报,上面有产品图片、功能介绍文字、价格信息,还有各种促销标签。传统方式需要人工分别处理图片和文字信息&#xf…...

Keyviz深度探索:你的数字操作轨迹可视化利器

Keyviz深度探索:你的数字操作轨迹可视化利器 【免费下载链接】keyviz Keyviz is a free and open-source tool to visualize your keystrokes ⌨️ and 🖱️ mouse actions in real-time. 项目地址: https://gitcode.com/gh_mirrors/ke/keyviz 你…...

Wan2.2-T2V-A5B工业设计应用:结合SolidWorks模型生成产品演示动画

Wan2.2-T2V-A5B工业设计应用:结合SolidWorks模型生成产品演示动画 你是不是也遇到过这样的场景?花了好几天时间,用SolidWorks精心设计了一个产品模型,内部结构复杂,功能巧妙。当你兴冲冲地想向客户、领导或者跨部门同…...

搭建两级式电力电子变换器仿真模型:从原理到Matlab/Simulink实现

两级式电力电子变换器仿真模型 前级为三相全桥整流电路,输入380V交流电;后级为闭环Buck电路,采用PI控制,输出为10V直流电;matlab/simulink模型 ,在电力电子领域,两级式电力电子变换器因其能够实…...

CosyVoice与专业音频工具AE结合:AI语音驱动视频片段创作

CosyVoice与专业音频工具AE结合:AI语音驱动视频片段创作 最近在尝试一些视频创作的新玩法,发现了一个挺有意思的组合:用AI语音生成工具来制作视频的配音,然后导入到专业的视频编辑软件里做后期处理。听起来可能有点跨界&#xff…...

飞书机器人集成实战:OpenClaw调用Qwen3.5-4B-Claude处理工单

飞书机器人集成实战:OpenClaw调用Qwen3.5-4B-Claude处理工单 1. 为什么选择OpenClaw处理工单? 去年我接手了一个小团队的客服系统改造项目,团队每天要处理200工单,但80%都是重复性问题。传统方案要么需要复杂的工单系统开发&…...

JAVA剪辑接单报价比价系统源码支持小程序+公众号+H5

JAVA剪辑接单报价比价系统:重塑视频制作服务数字化生态 行业痛点与系统优势 在短视频与新媒体蓬勃发展的时代背景下,视频剪辑需求呈现井喷式增长。然而,传统的剪辑接单模式长期面临三大核心痛点:供需匹配效率低下、价格体系混乱…...

ComfyUI视频模型部署指南:从本地存储到云端优化的技术选型

最近在部署ComfyUI视频生成项目时,遇到了一个很实际的问题:那些动辄几十GB的视频模型文件,到底该放在哪里?直接扔在本地硬盘,团队协作和版本管理就成了噩梦;想用NAS或云存储,又担心加载速度拖慢…...

收藏!AI大模型时代9大新兴岗位全景(小白/程序员必看,附转型指南+薪资前景)

最近经常和身边的程序员、职场朋友聊起一个热门话题:客服岗担心被AI替代,数据岗求职越来越卷,不少人都在焦虑自己会不会被时代淘汰。其实大家完全不用过度恐慌——纵观科技发展历程,任何一项新技术的崛起,从来不是简单…...

单片机编程软件很简单(14),Keil单片机编程软件断点设置

单片机编程软件十分常用,对于单片机编程软件,小编于往期文章中做过诸多介绍。本文对于单片机编程软件的介绍基于Keil,主要内容在于介绍该单片机编程软件的在线汇编功能以及断点设置。如果你对Keil单片机编程软件抑或本文即将涉及的内容存在兴…...

手把手教你用PHPStudy在Windows 10上搭建Pikachu靶场(附常见错误解决)

手把手教你用PHPStudy在Windows 10上搭建Pikachu靶场(附常见错误解决) 在网络安全学习过程中,本地靶场环境是必不可少的实践平台。Pikachu作为一款开源的Web漏洞练习平台,包含了SQL注入、XSS、CSRF等常见漏洞类型,是新…...

WuliArt Qwen-Image Turbo开源大模型:可自主部署的Qwen文生图轻量替代方案

WuliArt Qwen-Image Turbo开源大模型:可自主部署的Qwen文生图轻量替代方案 想体验一下只用4步就能生成高清大图的快感吗?WuliArt Qwen-Image Turbo就是这样一个专为个人电脑设计的“文生图加速器”。它基于阿里通义千问的Qwen-Image-2512模型&#xff0…...

LrcHelper:网易云音乐双语歌词下载与多设备适配工具全攻略

LrcHelper:网易云音乐双语歌词下载与多设备适配工具全攻略 【免费下载链接】LrcHelper 从网易云音乐下载带翻译的歌词 Walkman 适配 项目地址: https://gitcode.com/gh_mirrors/lr/LrcHelper 价值定位:三类用户的歌词解决方案 LrcHelper作为一款…...

CAS面试题总结

CAS是比synchronized更轻量的方式。CAS的核心先比较内存中的当前值是否和线程预期的旧值一致,一致则替换为新值;不一致则不替换,重新尝试。CAS的三个参数分别是V、A、BV:内存中的当前值(主内存中存储的变量值&#xff…...

使用VSCode高效开发Nano-Banana插件

使用VSCode高效开发Nano-Banana插件 想在VSCode中快速构建Nano-Banana引擎插件?这篇文章将分享一套经过实战验证的高效开发工作流,帮你节省大量调试时间。 1. 开发环境快速搭建 刚开始接触Nano-Banana插件开发时,最头疼的就是环境配置问题。…...