分类

JAVA

JAVA讨论区

Java Virtual Threads(虚拟线程)教程:进阶调优与性能压测指南(第 5 篇)
本文是Java虚拟线程系列的第5篇,聚焦生产环境性能优化。核心观点是虚拟线程本身无需调优,关键在于优化代码阻塞点与运行环境。文章指出应避免使用重量级锁、执行CPU密集型任务、频繁创建大对象,并确保底层I/O调用可挂起。同时强调需防止外部资源池(如数据库连接池)成为新瓶颈。提供了性能压测方法,推荐使用ZGC,并总结了生产环境调优策略与完整检查清单,帮助工程师系统提升虚拟线程在高并发场景下的性能表现。
2025-11-24
|
60
|
0
|
0
Java Virtual Threads(虚拟线程)教程:进阶调优与性能压测指南(第 5 篇)
Java Virtual Threads(虚拟线程)教程:Spring Boot 实战(第 4 篇)
本文详细介绍了在Spring Boot 3+中全面启用虚拟线程进行全链路优化的实践方法。通过配置Tomcat直接使用虚拟线程执行器,可使Web层吞吐量显著提升。文章指出,Controller至Repository层代码无需改动即可自动运行于虚拟线程,并强调数据库连接池是主要瓶颈,建议适当调大或采用R2DBC。压测数据显示,虚拟线程在I/O密集场景下吞吐量比传统线程池高3~20倍,且内存消耗更低,实现了同步写法与异步高性能的结合。
2025-11-22
|
189
|
0
|
0
Java Virtual Threads(虚拟线程)教程:Spring Boot 实战(第 4 篇)
Java Virtual Threads(虚拟线程)教程:调度机制与底层原理深度解析(第 3 篇)
本文深度解析了Java虚拟线程的调度机制。虚拟线程由少量平台线程执行,通过ForkJoinPool调度器管理。其核心优势在于:当虚拟线程执行I/O等阻塞操作时,会被立即挂起,栈帧保存至堆内存,从而释放平台线程去执行其他任务,实现了“同步写法,异步性能”。虚拟线程采用动态栈块管理,内存占用极轻。需注意避免因synchronized或原生I/O导致的Pinning问题。虚拟线程适用于I/O密集型场景,而非CPU密集型任务。
2025-11-21
|
59
|
0
|
0
Java Virtual Threads(虚拟线程)教程:调度机制与底层原理深度解析(第 3 篇)
Java Virtual Threads(虚拟线程)教程:同步写法获得异步性能(第 2 篇)
本文介绍了如何使用Java虚拟线程重构传统同步代码以提升性能。通过HTTP请求、数据库查询和RPC调用等实战案例,展示了虚拟线程相比传统线程池的优势:支持海量线程(如10万+)、I/O阻塞时自动挂起不占用系统线程,同时保持同步代码的简洁性。其核心价值在于以同步写法获得异步性能,大幅提升吞吐量,并简化开发维护。
2025-11-21
|
61
|
0
|
0
Java Virtual Threads(虚拟线程)教程:同步写法获得异步性能(第 2 篇)
Java Virtual Threads(虚拟线程)教程:从零入门(第 1 篇)
Java虚拟线程是JDK 21引入的轻量级并发工具,旨在解决传统线程资源消耗大、高并发场景下复杂度高的问题。它由JVM管理,每个线程仅占几十KB内存,支持创建百万级线程,尤其适用于I/O密集型任务。虚拟线程通过挂起机制实现阻塞时的资源自动释放,使同步代码具备异步性能,同时保持代码简洁。但不适用于CPU密集型计算。
2025-11-19
|
50
|
0
|
0
Java Virtual Threads(虚拟线程)教程:从零入门(第 1 篇)
Redis 分布式锁:原理、实现与最佳实践
本文详细介绍了Redis分布式锁在高并发系统中的应用,重点解析了其核心原理、实现方式及优化方案。基础实现通过`SETNX`和`EXPIRE`命令,但存在原子性问题;改进方案采用`SET NX EX`原子操作,并结合UUID与Lua脚本确保安全释放。进阶优化包括Redisson的WatchDog自动续期、可重入锁及RedLock多节点高可用方案。文章总结了常见问题(如死锁、误删)的解决方案,并推荐简单场景使用`SET NX EX`+Lua,复杂场景采用Redisson。最终强调合理使用Redis锁可提升系统稳定性与性能。
2025-08-05
|
72
|
0
|
3
Redis 分布式锁:原理、实现与最佳实践
hql 使用query.list()为空指针异常 ,但是数据库可以查出结果
文章针对Hibernate中使用HQL查询时,`query.list()`方法抛出空指针异常但数据库能查出结果的问题,指出核心原因是Hibernate配置中数据库方言设置错误。关键解决方案是检查并正确配置对应的数据库方言,例如Oracle应使用`org.hibernate.dialect.OracleDialect`。文中还提供了多种常见数据库的方言配置参考,以帮助开发者避免此类问题。
2025-03-16
|
367
|
1
|
3
hql 使用query.list()为空指针异常 ,但是数据库可以查出结果
Swagger2简单使用教程
本文介绍了Swagger2的基本使用教程,重点讲解了其在前后端分离开发中统一API文档标准的作用。文章详细列举了常用注解如@Api、@ApiOperation、@ApiParam等的使用示例,并提供了Maven依赖配置、SpringBoot集成步骤及配置类代码。通过实体类和Controller示例演示了Swagger的实际应用,最后说明通过访问/swagger-ui.html即可查看生成的交互式API文档。该教程帮助开发者快速掌握Swagger2的核心功能,实现规范的API文档管理与测试。
2025-02-26
|
349
|
0
|
4
Swagger2简单使用教程