浅聊多线程
话题一为什么要有多线程单线程只是单地将代码自上而下地运行如果程序阻塞或者耗时整个就卡住了多线程可以同时运行多段代码块解决了阻塞io问题同时可以将内存的性能充分释放提高了响应速率使得用户的使用体验更好不至于出现卡顿。话题二进程与线程的区别。进程是内存分配的最小单元线程是cpu分配的最小单元。在一个进程中至少包含了一个主线程并且在同一进程内所有线程共享资源。进程的的创建和切换开销大线程的创建和切换的开销相对轻量级但是由于cpu多核发展受限后来又发明了线程池。话题三线程的五大生命周期。新建new通过new thread 创建线程对象操作系统中还未创建真实线程不分配资源。就绪Runnable)调用 start后进入该状态其中又分两种情况1.就绪线程已经准备好了等待cpu分配时间片2.运行中线程抢到了cpu时间片执行run) 方法阻塞Blocked线程等待同步锁时进入阻塞等待Waiting主动无限的等不占用cpu需要其他线程主动唤醒也可计时等待 Timed_Waiting )终止(Terminated)run()正常执行完/异常终止线程结束资源回收无法再次启动。话题四并发与并行。并发多任务交替执行单核cpu即可并行多任务同时进行(需要有多核cpu话题五线程的创建方法。1.继承Thread类class MyThread extends Thread { Override public void run() { System.out.println(线程执行); } }2.实现runnable接口class MyRun implements Runnable { Override public void run() { System.out.println(Runnable 线程); } }3.匿名内部类lambda表达式Thread t new Thread(()-{ });话题六线程安全问题。1.线程安全是什么线程处理的数据是共享可变的多线程同时进行可能引起数据竞争。2.线程不安全的核心共享变量非原子操作指令重排和可见性问题3.解决方案同步锁synchronized原子类解决原子问题volatile解决可见性问题话题七线程池1.使用线程池的原因减少线程创建销毁的开销控制数量以及任务统一管理避免OOM内存溢出问题2.线程池核心参数1.核心线程数corePoolSize线程池常驻线程数即使空闲也不会被回收长期处理常规任务2.最大线程数maximumPoolSize线程池允许创建的最大线程总数任务激增时扩容3.空闲存活时间keepAliveTime非核心线程的空闲超时时间超时无任务则被回收4.任务队列workQueue存储待执行任务的阻塞队列核心线程满负载后任务进入队列5.拒绝策略handler线程数和队列均满负载时处理超额任务的策略。3.常用的线程池1.固定线程池FixedThreadPool核心线程数最大线程数线程数量固定适合负载稳定的批量任务2.缓存线程池CachedThreadPool无核心线程、最大线程数无限线程空闲自动回收适合短期、大量瞬时任务3.定时线程池ScheduledThreadPool支持延时、周期性执行任务适合定时巡检、定时统计场景4.自定义线程池ThreadPoolExecutor手动配置所有参数适配业务场景参数可控、无隐患企业开发唯一推荐。线程池开发规范与避坑1.禁止使用Executors工具类创建线程池原生线程池存在队列无界、线程数无限等问题极易引发OOM内存溢出2.必须自定义线程池根据业务QPS、任务耗时合理配置核心参数限制最大并发数3.拒绝策略按需选择核心业务使用自定义降级策略非核心业务可丢弃、告警4.必须处理任务异常线程池任务异常会静默消失导致业务无响应、问题难排查需全局捕获异常5.合理设置线程池名称方便日志排查、线程堆栈定位问题。话题八多线程开发中遇见的常见问题1.死锁问题四大要素不可少1互斥条件 2请求保持 3不可剥夺 4: 循环等待)public static void main(String[] args) throws InterruptedException { Object locker1 new Object(); Object locker2 new Object(); Object locker3 new Object(); Thread t1 new Thread(()-{ for(int i 0;i10;i){ synchronized (locker1){ try { locker1.wait(); System.out.print(A); synchronized (locker2){ locker2.notify(); } } catch (InterruptedException e) { throw new RuntimeException(e); } } } }); Thread t2 new Thread(()-{ for(int i 0;i10;i){ synchronized (locker2){ try { locker2.wait(); System.out.print(B); synchronized (locker3){ locker3.notify(); } } catch (InterruptedException e) { throw new RuntimeException(e); } } } }); Thread t3 new Thread(()-{ for(int i 0;i10;i){ synchronized (locker3){ try { locker3.wait(); System.out.println(C); synchronized (locker1){ locker1.notify(); } } catch (InterruptedException e) { throw new RuntimeException(e); } } } }); t1.start(); t2.start(); t3.start(); //先确保所有线程都执行到了wait,才能按照上述逻辑执行有两种方法1sleep 2用scanner阻塞 Thread.sleep(1000); synchronized (locker1) { locker1.notify(); } } }2.线程虚假唤醒private static volatile SingletonLazy instance null; private static Object locker new Object(); public static SingletonLazy getInstance() { //线程 A、线程 B 同时执行 getInstance() //此时 instance null两个线程都通过外层 if(instancenull) 判断 //A 先抢到同步锁进入代码块创建对象释放锁 //B 阻塞完拿到锁直接执行 new又创建了第二个对象 //最终出现两个不同实例单例失效。 // 内层 if 就是为了解决这个场景线程 B 拿到锁后再检查一次 instance发现已经不为 null直接跳过创建。 if(instance null) { synchronized (locker) { if (instance null) { instance new SingletonLazy(); } } } return instance; } private SingletonLazy(){ } } public class Demo28 { public static void main(String[] args) { Singleton t1 Singleton.getInstance(); Singleton t2 Singleton.getInstance(); System.out.print(t1 t2); } }本文仅限个人拙见希望大家能够帮我指出漏洞以及那些没学到的知识谢谢

相关新闻

中国限定宝可梦魔方:收藏价值与鉴别指南

中国限定宝可梦魔方:收藏价值与鉴别指南

这次我们来看一个特殊的宝可梦收藏品——中国限定版魔方。这个由知名创作者Tingman分享的"最稀有宝可梦魔方"引起了收藏爱好者的广泛关注,它不仅设计独特,更重要的是只有在中国市场才能购买到。作为宝可梦正版授权产品,这款魔方融合…

2026/7/23 6:58:08 阅读更多 →
史诗级重磅!全网沸腾!7 月 AI 迎来历史性拐点:手机离线 AI 全面解禁,300 款全球顶尖黑科技即将集中亮相,普通人彻底告别云端限制!

史诗级重磅!全网沸腾!7 月 AI 迎来历史性拐点:手机离线 AI 全面解禁,300 款全球顶尖黑科技即将集中亮相,普通人彻底告别云端限制!

离线 AI 时代正式到来!7 大手机厂商全部获批,上海世界人工智能大会将放出 300 款首发 AI 硬核产品2026 年 7 月 16 日,一条刷屏全网的 AI 重磅消息引爆科技圈,叠加即将于 7 月 17 日开幕的第九届世界人工智能大会,整个…

2026/7/23 2:57:50 阅读更多 →
GAN SG-1魔方磁力定位与波动结构设计深度解析

GAN SG-1魔方磁力定位与波动结构设计深度解析

魔方作为一种经典的益智玩具,近年来在结构设计和磁力系统上不断推陈出新。GAN SG-1 作为一款针对 SQ-1 魔方形态进行深度优化的新品,通过独家磁力设计和精准波动结构,在保持经典玩法的同时提升了手感和稳定性。对于魔方爱好者和速度玩家来说&…

2026/7/23 3:00:45 阅读更多 →

最新新闻

AI开发实战指南:从Spring AI集成到本地Agent构建

AI开发实战指南:从Spring AI集成到本地Agent构建

如果你是一名开发者,最近可能已经感受到了一个明显的变化:无论是技术社区、项目文档,还是日常开发工具,AI 相关的功能和讨论几乎无处不在。但面对这股 AI 浪潮,很多人的第一反应可能是困惑:这些工具到底能解…

2026/7/24 2:25:10 阅读更多 →
保持代码灵活性:用近似解和问题重定义实现高性能

保持代码灵活性:用近似解和问题重定义实现高性能

引言:高性能不靠微观优化,靠问题重定义 很多开发者追求微优化——用C扩展、手动循环展开、甚至汇编——却忽略了最根本的性能杠杆:问题本身的定义方式。实际工程经验表明,通过重新审视问题,用近似解替代精确计算,往往能获得10-100倍的性能提升,同时保持代码灵活、易于维…

2026/7/24 2:25:10 阅读更多 →
【数字人口型同步技术终极指南】:20年音视频架构师亲授5大核心算法与实时唇动匹配实战秘籍

【数字人口型同步技术终极指南】:20年音视频架构师亲授5大核心算法与实时唇动匹配实战秘籍

更多请点击: https://kaifayun.com 第一章:数字人口型同步技术的演进脉络与行业价值 数字人口型同步技术并非传统数据同步的简单延伸,而是面向大规模、高并发、强一致性人口级实体(如公民身份、社保账户、医疗档案等)…

2026/7/24 2:25:10 阅读更多 →
知识蒸馏技术解析:从原理到Qwen开源模型实战应用

知识蒸馏技术解析:从原理到Qwen开源模型实战应用

最近,一个看似技术性的议题突然在海外科技圈掀起波澜:知名科技分析师 Ben Thompson 公开提议美国立法,禁止闭源模型厂商通过服务条款限制用户对模型输出的"蒸馏"使用。这个提议的直接导火索,是中国开源模型如 Qwen 系列…

2026/7/24 2:25:10 阅读更多 →
DOM事件

DOM事件

DOM事件:DOM 事件 是指浏览器中用户与页面交互或浏览器自身行为发生时触发的信号,你可以通过 JavaScript 监听这些信号并执行相应的代码。通俗理解把 DOM 事件想象成"通知":场景触发的"通知"(事件&#xff09…

2026/7/24 2:25:10 阅读更多 →
LLM请求-响应循环全解析:从Token化到错误处理的完整指南

LLM请求-响应循环全解析:从Token化到错误处理的完整指南

在实际开发中调用大语言模型API时,很多开发者会遇到请求超时、响应截断或token限制等问题。本文将通过完整的代码示例,深入解析LLM请求-响应循环的每个环节,帮助开发者理解从输入处理到输出生成的全流程,并提供实用的调试技巧。1.…

2026/7/24 2:24:10 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻