自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 Agent 何时该 Replan:五个关键判断

本文探讨AI Agent在执行任务时如何判断"重试"与"重新规划"的决策边界。核心观点指出,Replan的触发条件不应是单纯的操作失败,而应是"计划前提失效"。作者提出三层判断框架:1)是否存在替代执行方式;2)新信息是否破坏后续步骤前提;3)能否通过局部调整达成目标。

2026-08-17 17:39:03 134 2

原创 AI工作流编排的三大关键问题

本文探讨了AIAgent工作流设计的核心问题,指出传统流程图思维的局限性,并提出基于动态依赖图的解决方案。文章分析了三类关键依赖关系(数据依赖、决策依赖、副作用依赖)如何决定任务执行顺序,强调并行任务需要明确的Join策略和失败处理机制。作者提出Planner应基于Tool能力契约而非实现细节进行决策,并区分致命失败与可恢复失败。最终建议将工作流建模为动态有向无环图(DAG),每个节点需明确依赖关系、输入要求、工具能力、失败策略和合并策略,从而使系统能够智能判断执行路径,而非简单遵循预设流程。

2026-08-17 17:37:24 107 2

原创 从 Plan 到 DAG:如何判断依赖、环与并行任务

本文揭示了任务计划(Plan)与有向无环图(DAG)的核心区别在于依赖关系的判断标准。真正的依赖关系应通过输入输出来判定,而非任务排列顺序。文章提出三种主要依赖类型(数据/决策/状态依赖),并给出将线性计划转化为高效DAG的四步法:拆解任务、定义输入输出、建立依赖边、检查环路。特别强调优秀DAG应追求最小必要依赖,而非复杂连接,同时指出并行执行需同时考虑任务依赖和资源约束。最后提出以"输入-输出"为核心的分析框架,能自然衍生出依赖关系、

2026-08-16 19:38:51 444 4

原创 Agent 为什么需要 Planning:从 ReAct 到任务拆解

本文探讨了AI Agent在执行复杂任务时规划(Planning)机制的必要性和实现方式。文章指出,尽管现代Agent单步执行能力强大,但在多步骤、信息相互依赖的复杂任务中容易偏离目标,陷入局部最优。Planner的作用类似于项目经理,通过回答三个核心问题(最终目标、关键步骤、当前步骤价值)来保持任务的方向性。

2026-08-16 19:34:40 199 4

原创 Agent 为什么需要先定义“什么叫完成”

文章摘要:AI Agent在执行任务时存在一个核心问题——对"完成"标准的理解偏差。Agent往往会机械完成表面任务却忽略实质需求,导致"过早宣布完成"现象。解决这一问题的关键在于建立分层的成功标准(SuccessCriteria):1)明确目标结果;2)设定可验证条件;3)添加约束条件。理想模式应是用户与Agent共同定义标准,在执行中保持动态透明调整,并通过独立验证机制确保质量。最关键的是将"完成"转化为可验证状态,而非依赖Agent的主观判断

2026-08-15 17:21:37 391 4

原创 Agent 的 Goal,不该只是一句话

这篇文章探讨了AI Agent如何有效理解、管理和更新用户目标(Goal)的问题。文章指出,用户需求通常是动态变化的,Agent需要将自然语言转化为结构化的任务状态,包含目标、约束条件、子任务、完成标准等要素。核心挑战在于: 如何区分硬性约束和软性偏好 如何定义明确的子任务完成标准 如何处理用户中途修改需求的情况 如何识别和解决约束条件间的冲突 有效的Goal系统需要维护持续更新的任务状态,而不仅仅是保存原始提示词。关键在于Agent能否准确追踪哪些条件被修改、哪些不可违反,从而建立可靠的任务执行基础。

2026-08-15 17:18:39 309 4

原创 Agent 面对模糊目标时,什么时候该问,什么时候该做?

智能代理(Agent)的核心能力在于准确判断任务执行条件,而非单纯执行能力。面对模糊指令时,Agent需区分关键信息缺失是否会导致行动方向改变,而非机械地要求明确所有细节。合理策略包括:对低风险、可逆操作主动推进;对高风险、不可逆操作严格确认;将任务拆解为安全区和危险区,优先完成确定部分。优秀Agent应具备"计划层"思维,将用户目标转化为执行步骤,只在关键决策点寻求确认。真正的智能体现在区分自主判断与用户决策的边界,而非盲目执行或过度询问。

2026-08-14 17:08:22 635 8

原创 Agent 什么时候该停:终止条件设计的真正难点

Agent 的难点不只是“怎么做事”,更在于“什么时候停止”。可靠的终止机制不能只依赖模型主动输出 Finish,而应结合程序级校验、工具失败判断、Token/时间/成本预算,以及重复搜索和边际收益下降等信号。好的 Agent 需要同时判断:任务是否完成、继续行动是否还能获得新信息、额外消耗是否值得。模型负责理解任务完成度,程序负责守住边界,两者结合,才能避免过早结束、无限循环和无效消耗。

2026-08-14 17:03:09 393 8

原创 Agent Run 的状态机:别把智能体交给 LLM 自己管

本文讨论 Agent 系统的状态管理与控制边界。建议区分 Run、Step、Tool 三层状态,并以 Running、Waiting、Failed、Completed 四种基础状态支撑任务流转。关键步骤应由程序和状态机强制约束,而非仅依赖 Prompt。Waiting 可长期存在且无需进程持续运行。可靠的 Agent 应由 LLM 负责决策,程序负责状态、权限与规则校验,实现任务可中断、可恢复且更安全。

2026-08-13 18:05:22 456 12

原创 Agent为什么不能无限跑:迭代上限该怎么设

Agent执行任务时需设定最大迭代次数,以防止无限循环或资源浪费。该参数并非单纯限制模型能力,而是平衡任务复杂度、成本与风险的安全机制。设置时需基于任务正常步骤预留纠错空间,避免过早终止或过度消耗。但仅靠迭代次数限制不够,还需结合重复动作检测、进展监控等机制,动态判断是否继续执行。核心在于让Agent具备识别无效循环的能力,而非盲目执行。

2026-08-13 18:03:00 670 12

原创 Agent 不是越自主越好:如何设计可控的智能系统

构建AI Agent时,关键在于区分确定性与不确定性任务。确定性流程(如规则计算、数据库操作)应通过代码固定,而模型应专注于开放性问题(如模糊输入、动态决策)。过度追求自主性会导致错误累积和不可控风险,合理的设计应结合确定性框架与局部自主节点,通过权限管理、错误检测等机制约束Agent行为。成熟的Agent系统应平衡智能与可靠性,只在必要时引入动态决策,而非盲目追求"全自主"。未来Agent框架的核心将转向控制层设计,而非单纯增强模型能力。

2026-08-12 17:17:12 562 14

原创 一个通用 Agent 到底是怎样完成任务的?

AI Agent与普通聊天机器人的核心区别在于其执行循环机制。Agent通过"状态评估-行动选择-执行更新"的闭环工作:先明确任务目标和约束,动态判断需要思考还是调用工具,每次行动后评估是否满足成功标准,并在资源限制或条件满足时终止任务。可靠Agent的关键不是工具数量或模型智能度,而是建立清晰可控的执行循环:将用户请求转化为可执行任务,在获取外部信息与内部推理间动态切换,并设置独立验证机制决定任务终止条件。这种循环设计决定了Agent能否将能力稳定转化为有效结果。

2026-08-12 17:16:32 390 11

原创 别急着做 Agent:先判断任务有没有不确定性

Agent的价值在于处理无法预先确定的动态决策任务,而非固定流程。当任务涉及模糊判断、非结构化数据或依赖实时反馈时(如分析客户流失原因),Agent更具优势;而对于规则明确、路径固定的场景(如报销审批),传统Workflow或代码更高效可靠。设计时应遵循“从简到复杂”原则:优先用代码处理确定性步骤,仅在必要节点引入LLM,最后对高度不确定的流程采用Agent。关键在于区分任务的灵活性需求,而非盲目追求“全Agent化”。

2026-08-10 17:49:09 389 11

原创 你怎么定义一个 Agent?别再从 Function Calling 开始

Agent核心不在技术,而在模型能否运行时动态决策。它围绕目标形成观察、决策、行动、反馈闭环,自主拆解任务、选择工具、调整路径,受边界约束。代码预设流程是Workflow,模型动态控制才是Agent。

2026-08-10 17:47:26 484 7

原创 Java基础知识梳理(六):动态代理、SPI与ToolRegistry插件化设计

本文系统介绍了Java中动态代理与SPI机制的原理与应用。动态代理分为JDK基于接口的代理和CGLIB基于继承的代理,可在不修改目标类代码的情况下增强方法功能,常用于日志、事务等场景。SPI机制通过ServiceLoader实现服务发现,支持运行时加载扩展实现,如JDBC驱动。文章详细阐述了如何结合动态代理、SPI和注册表模式构建插件系统,包括工具注册表设计、生命周期管理、注解元数据、类加载隔离等关键技术点,并分析了版本兼容、安全风险等注意事项,最终形成职责清晰、可扩展的插件架构解决方案。

2026-07-27 17:43:16 246 6

原创 Java基础知识梳理(五):泛型、反射、注解与Spring底层机制

本文详细介绍了Java框架开发的三大基础技术:泛型、反射和注解。泛型通过类型参数化提高代码复用和类型安全,采用类型擦除机制保持兼容性但也存在运行时限制。反射允许程序动态获取类信息并操作对象,虽然性能较低但为框架提供了灵活性。注解作为结构化元数据,结合反射被广泛用于框架配置和功能声明。Spring等主流框架通过反射读取注解信息,实现了依赖注入、AOP等核心功能,降低了业务代码耦合度。合理运用这些技术可以在保证类型安全的同时,增强框架的扩展性和可维护性。

2026-07-27 17:38:27 357 4

原创 Java基础知识梳理(四):异常体系、finally与统一异常处理

本文梳理Java异常体系,区分Error、Checked Exception与Unchecked Exception,并说明异常捕获、日志记录及资源释放的正确方式。finally通常会执行,但在JVM终止等特殊情况下可能失效;同时应避免在finally中使用return,以免覆盖返回值或吞掉异常。项目开发中应将参数异常、业务异常和系统异常分类处理,结合Spring Boot统一异常处理器,规范错误码、接口返回与日志记录。业务异常应提供明确提示,系统异常需记录完整堆栈并隐藏内部信息,从而提升系统的安全性、稳定

2026-07-26 20:11:41 477 9

原创 Java基础知识梳理(三):String、字符串常量池与包装类缓存机制

本文解析Java中String不可变性的原理与优势,包括final设计、线程安全及哈希值缓存。对比String、StringBuilder和StringBuffer的性能差异与适用场景,说明字符串常量池和intern()的作用。同时介绍Integer在-128~127范围内的缓存机制,以及自动装箱、拆箱可能引发的空指针和性能问题。学习重点是区分对象创建位置、引用比较与内容比较,字符串和包装类比较应优先使用equals(),避免误用==。

2026-07-26 20:01:54 470 6

原创 Java对象传递与深浅拷贝核心解析

本文解析Java中五大核心概念:对象参数传递、==与equals()比较、hashCode()作用以及深浅拷贝。理解这些知识的关键在于区分变量、引用值和对象本身。Java采用值传递机制,传递的是变量值的副本;引用类型传递的是引用值副本,而非对象本身。==用于比较基本值或对象身份,equals()用于逻辑内容比较,重写equals()需同步重写hashCode()。深浅拷贝的核心区别在于是否复制内部可变对象,实际开发需根据业务需求选择。掌握这些概念,本质是理解引用变量保存的是对象引用,而不是对象本身。

2026-07-25 16:31:34 337 11

原创 Java跨平台与面向对象:核心技术全解析

本文系统梳理了Java核心概念间的关联,主要分为两大主题:程序运行机制和面向对象特性。在运行机制方面,重点解析了JVM实现跨平台的原理(字节码+平台特定JVM)、JDK/JRE/JVM的层级关系,以及JIT编译器如何动态优化热点代码。面向对象部分则深入探讨了三大特性:封装通过访问控制保护数据;继承实现代码复用;多态基于动态绑定实现同一接口的多样化行为。文章还对比了重载(编译时多态)与重写(运行时多态)的关键差异,以及抽象类(共享状态)与接口(定义能力)的不同应用场景,为理解Java核心机制提供了清晰框架。

2026-07-25 16:11:47 304 5

原创 Java 面试高频:反射机制与异常体系全面解析

摘要:反射是Java运行时动态获取类信息并操作类成员的机制,常用于框架底层(如Spring、MyBatis)。其优点是灵活性高,缺点是性能较低(需运行时解析)且可能破坏封装性。获取Class对象有三种方式:类名.class、对象.getClass()和Class.forName()。通过反射可创建对象、调用私有方法/字段(需setAccessible(true))。异常处理中,Error表示严重系统错误(如OOM),Exception为可处理的程序异常(如空指针)。

2026-05-27 19:39:48 746 3

原创 从金融场景出发:深入理解 BigDecimal 与 Java 核心特性

金融领域使用BigDecimal而非double的主要原因在于精度控制。double采用二进制浮点计算,无法精确表示某些十进制小数(如0.1),会导致金额计算误差。BigDecimal通过精确的十进制表示解决了这个问题,特别适合金融场景。但使用时需注意:equals()会同时比较数值和精度位数,除法需指定舍入模式避免异常,且性能较差不宜用于高频计算。相比之下,自动装箱/拆箱机制实现了基本类型与包装类的便捷转换,而面向对象的封装、继承和多态特性则通过不同维度增强了代码的灵活性和安全性。

2026-05-26 22:16:19 580 10

原创 MySQL索引:B+树如何让2000万数据3次I/O搞定

MySQL索引是一种用空间换时间的数据结构,底层采用B+树实现。B+树具有多路平衡查找特性,树形结构矮胖,查找时间复杂度为O(logn)。其核心优势在于:非叶子节点仅存储键值,使得单页能容纳更多键,减少树高和磁盘I/O;所有数据存储在叶子节点并通过双向链表连接,支持高效范围查询和排序;查询性能稳定可预测。相比B树,B+树在范围查询和磁盘I/O方面表现更优。InnoDB选择B+树主要因其完美契合数据库的查询模式,三层结构即可支持千万级数据,而MongoDB因侧重单文档查询采用B树结构。

2026-05-26 22:12:26 750 9

原创 ConcurrentHashMap线程安全机制解析【个人八股】

ConcurrentHashMap通过分段锁(JDK7)和CAS+synchronized(JDK8)实现线程安全。JDK7将Map分为若干段,每段独立加锁;JDK8采用更细粒度的桶锁,结合红黑树优化查询。读操作利用volatile保证可见性,写操作优先CAS,失败则加锁。相比非线程安全的HashMap,ConcurrentHashMap在多线程环境下更安全高效。

2026-05-25 16:17:54 515 10

原创 JDK8 HashMap底层结构解析

JDK8中HashMap采用数组+链表+红黑树结构,数组存储键值对,链表解决哈希冲突,当链表长度超过8且数组长度大于64时转为红黑树。通过hash()方法减少冲突,负载因子0.75平衡空间效率。扩容时容量翻倍,重新分配元素。线程不安全问题包括扩容死循环(JDK7)、元素丢失和并发get为null,可用ConcurrentHashMap解决。JDK8优化包括引入红黑树、尾插法、扩容时机调整和哈希扰动算法改进。

2026-05-25 16:16:10 506 8

原创 Redis为何如此快?揭秘IO多路复用技术【个人八股】

Redis高性能的关键因素包括:1)内存存储实现微秒级响应;2)采用IO多路复用技术(从6.0版本开始引入),通过select/poll/epoll等机制实现单线程高效处理大量连接;3)极致优化的数据结构设计。早期Redis采用单线程模型避免锁竞争和上下文切换,6.0版本后引入多线程仅处理网络IO,命令执行仍保持单线程。IO多路复用技术通过事件驱动模型(如epoll的红黑树和就绪列表)实现高效并发处理,相比传统select/poll具有更高性能。Redis单线程QPS可达10万级别,多线程进一步提升网络IO

2026-05-24 15:28:10 506 18

原创 Redis实战:从缓存到高可用架构全解析【个人八股】

Redis是一种高性能的NoSQL内存数据库,主要用于缓存热点数据以减轻数据库压力。它支持多种数据结构,如String、Hash、List、Set、ZSet等,可用于实现缓存、计数器、排行榜等功能。与MySQL等关系型数据库相比,Redis数据存储在内存中,访问速度更快,但需要通过持久化机制(如RDB/AOF)保证数据安全。Redis的高可用方案包括哨兵机制(监控主从节点并自动故障转移)和Redis Cluster(支持水平扩展和数据分片)。在实际项目中,Redis常用于实现多级缓存、分布式锁、限流等功能。

2026-05-23 12:12:36 363 16

原创 2026大厂Redis高频考点全解析【干货!】

本文整理了2024-2026年大厂Java后端面试中Redis高频考点,涵盖基础数据结构、缓存三大问题、分布式锁、集群高可用等核心内容。重点包括:Redis五种基础数据类型及底层实现原理;缓存穿透、击穿、雪崩的解决方案;分布式锁的实现与RedLock算法;缓存与数据库一致性保障;集群架构与哨兵机制等。文章特别指出字节、腾讯等公司常考察场景设计题,如秒杀系统、热点Key处理等实战问题,并强调面试官会从基础使用、原理理解、场景设计到故障排查层层深入考察候选人的真实项目经验。

2026-05-23 12:12:12 568 8

原创 从 URI 区分到 HTTP1.0/1.1/2/3 发展详解【个人八股】

URI是统一资源标识符,用于标识Web资源类型;URL是URI子集,提供资源路径和访问方式。HTTP协议演进:1.0默认短连接,1.1引入长连接和流水线处理,2.0采用二进制协议、多路复用和服务器推送。HTTP/3基于QUIC协议解决TCP队头阻塞问题。目前HTTP/2最流行,占比46.9%。长连接通过Connection:keep-alive实现,1.1默认开启,超时可通过HTTP守护进程或TCP内核参数设置。

2026-05-22 11:37:55 589 11

原创 2025大厂Java后端面试:RAG高频考点【干货】

【大厂Java后端面试RAG高频考点总结】 近期大厂面试中,RAG技术已与传统Java八股深度结合考察。核心考点包括:1)基础概念(与传统搜索/微调的区别);2)技术选型(模型、向量库、框架对比);3)索引分块策略与文档解析;4)混合检索与重排序优化;5)效果评估指标(Recall@K等)与闭环优化;6)高并发工程实现(缓存、限流);7)Java生态整合(SpringAI原理);8)Agent进阶应用。面试需避免五大误区:黑盒调用、选型模糊、缺乏量化、浅层分析、忽视工程。典型真题涉及系统架构设计、性能优化。

2026-05-22 11:37:26 1077 23

原创 HTTP请求全过程解析【个人八股】

HTTP请求过程基于TCP/IP协议,客户端通过DNS解析获取服务器IP后建立TCP连接,发送HTTP请求并等待服务器响应。请求报文包含请求行、头部和可选正文,响应报文包含状态行、头部和可选正文。多线程下载可利用HTTP头部的Range字段实现分片传输。整个过程遵循客户端-服务器模型,包括建立连接、请求-响应、断开连接三个阶段。

2026-05-21 20:52:09 673 7

原创 HTTP状态码与请求方式全解析【个人八股】

本文深入解析HTTP协议,重点介绍了HTTP状态码和请求方法。HTTP状态码分为5类:1xx(信息)、2xx(成功)、3xx(重定向)、4xx(客户端错误)和5xx(服务器错误),并详细解释了301和302重定向的区别。HTTP请求方法包括GET(获取资源)、POST(提交数据)、PUT(替换资源)和DELETE(删除资源)等,其中GET请求具有幂等性,而POST请求则没有。文章还对比了GET和POST的区别,包括参数传递方式、长度限制(浏览器对GET请求的URL长度有限制)以及安全性等。

2026-05-21 20:51:56 417 5

原创 从输入URL到网页显示的全过程解析【个人八股】

本文概述了从浏览器输入URL到网页显示的全过程,主要包括DNS解析、TCP连接、HTTP请求/响应和页面渲染等环节。重点解析了DNS工作原理:浏览器先检查本地缓存,若无则依次查询根域名、顶级域名和权限域名服务器获取IP地址。同时对比了WebSocket与Socket的区别,前者是应用层持久化协议,后者是网络编程接口。文章还提及常见端口号及抓包工具的使用,为后续深入探讨HTTP、TCP等协议奠定基础。整个过程涉及多协议协同工作,展现了网络分层架构的运作机制。

2026-05-20 19:23:50 681 11

原创 揭秘计算机网络架构:从OSI到TCP/IP的层层解析【个人八股】

摘要:计算机网络体系结构主要包括OSI七层模型、TCP/IP四层模型和五层模型。OSI模型分为应用层(用户接口)、表示层(数据转换)、会话层(会话管理)、传输层(端到端传输)、网络层(路由选择)、数据链路层(帧传输)和物理层(物理介质)。TCP/IP模型将OSI简化成应用层、传输层(TCP/UDP)、网际层(IP)和网络接口层。五层模型则将网络接口层细分为数据链路层和物理层。数据在各层间传输时,发送方从上到下封装数据,接收方从下到上解封装。其中三次握手和四次挥手发生在传输层。

2026-05-20 18:15:14 615 18

原创 多线程并发实战:从原理到应用【个人八股】

本文从多线程技术切入,重点讨论了线程上下文切换机制、线程间通信方式及线程安全实现。线程切换通过保存当前状态和加载新线程上下文实现,采用时间片轮转保证并发执行。线程通信方式包括volatile/synchronized共享对象、wait-notify生产者消费者模式、Exchanger数据交换和Condition条件协调等。为确保线程安全,可使用同步锁、原子类、ThreadLocal及并发容器等技术。文章以单例模式为例,对比了饿汉式和双重检查锁定的懒汉式实现,并简要提及Hashtable的同步数组链表结构。

2026-05-19 16:55:05 663 14

原创 Java并发编程:线程安全与多线程实战指南【个人八股】

Java并发编程摘要 本文系统介绍了Java并发编程的核心概念。主要内容包括:1)线程与进程的区别,线程作为轻量级执行单元共享进程资源;2)线程安全的三大特性(原子性、可见性、有序性)及实现方式,如synchronized同步块和volatile关键字;3)线程生命周期状态转换及常用调度方法;4)线程间通信机制,包括共享内存、wait-notify、Condition和Exchanger等;5)线程安全实践,如单例模式的线程安全实现;6)并发容器如Hashtable的线程安全实现原理。

2026-05-19 16:46:12 594 13

原创 SpringBoot开发秘籍【个人八股】

SpringBoot是一个基于Spring框架的快速开发脚手架,通过"约定大于配置"理念简化了Spring应用的开发和部署。它提供自动配置功能,根据项目依赖自动装配合适的Bean,并内置Tomcat服务器。SpringBoot通过Starter机制整合依赖,解决版本冲突问题,同时提供开箱即用的功能如Actuator监控和DevTools开发工具。相比传统Spring开发,SpringBoot减少了XML配置,让开发者更专注于业务逻辑。

2026-05-18 20:00:54 388

原创 索引提速秘籍【个人八股】

索引通过建立类似书籍目录的结构,显著提升数据库查询效率。其核心原理是将查询复杂度从O(N)降低到O(logN),避免全表扫描。索引可分为主键、唯一、全文等类型,底层多采用B+树结构,因其高度平衡、支持范围查询且适合磁盘存储。合理使用索引需注意:选择高区分度字段、控制索引数量、遵循最左前缀原则。索引优化需定期分析执行计划,避免在频繁更新或区分度低的字段上建索引。B+树相比B树和哈希表更适合数据库场景,能稳定支持高并发查询。典型情况下,3层B+树可存储约2000万条数据。

2026-05-18 19:57:47 516 8

原创 多线程并发:管程共享问题详解【个人心得】

本文探讨Java多线程共享变量安全问题,通过示例指出count++非原子性导致结果异常。介绍JMM内存模型、临界区及竞态条件。针对线程安全,详解synchronized语法、Monitor实现原理及锁升级过程(偏向→轻量→重量)。探讨ReentrantLock的可打断、超时、公平锁特性,条件变量使用,以及顺序加锁避免死锁。最后通过生产者消费者与哲学家就餐案例,展示wait/notify和park/unpark两种线程协作方式。系统阐述了Java并发编程的核心概念与解决方案。

2026-04-08 09:10:14 451

原创 深入解析Java线程:创建、状态与中断机制【个人心得】

本文详细讲解了Java线程的创建、运行原理和常用方法。首先介绍了三种创建线程的方式:继承Thread类、实现Runnable接口和使用Callable接口,并分析了各自的优缺点。然后讲解了线程的运行原理,包括栈帧调用、上下文切换机制及其性能影响。重点讲解了start/run、sleep/yield、join/interrupt等关键方法的使用场景和区别,特别强调了正确终止线程的两阶段终止模式。最后总结了线程状态转换关系,并建议根据实际业务需求选择合适的线程创建方式。

2026-04-08 09:08:25 396

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除