java教程技术文章
-
Java 虚拟线程解决的是大量任务在阻塞等待时的并发容量,不会增加 CPU 核心,也不会让单个计算更快。本文用载体线程、调度器和执行器示例说明 CPU 密集任务的正确拆分方式。448 收藏 -
Java 虚拟线程适合高并发、以 HTTP、JDBC 等 I/O 等待为主的任务编排,但不能替代 CPU 并行、连接池和下游限流。本文用代码和边界表说明如何选择。387 收藏 -
Java StructuredTaskScope 仍是预览 API,适合请求内并行子任务的统一等待、失败传播和超时取消,不适合替代持久队列或长期后台任务。347 收藏 -
Java 项目拆成模块后,反射访问被拒绝通常不是反射 API 失效,而是 exports、opens 或调用方模块关系没有满足访问边界。本文用最小配置说明如何判断并收窄修复范围。391 收藏 -
用 JFR 的事件阈值、一次性录制时长和 jfr 结果读取,捕获 Java 服务一个有限的慢请求窗口,并区分网络等待、锁等待与应用执行线索。395 收藏 -
ConcurrentHashMap.computeIfAbsent 的映射函数不能递归更新同一键。本文解释原子计算边界、IllegalStateException 的成因,并用局部解析状态加 putIfAbsent 演示如何拆分递归计算与共享缓存发布。323 收藏 -
Java CompletableFuture 超时并不会自动停止底层任务。本文用可取消的 Future 连接超时结果与执行器任务,说明 Future.cancel(true)、线程中断和 I/O 超时该如何配合。175 收藏 -
Spring Retry 只能控制临时异常的再次调用,不能单独保证消息幂等。本文用稳定 messageId、inbox 唯一约束、事务边界和外部接口幂等键,说明如何避免异常重试造成重复处理。445 收藏 -
Spring 默认通过 AOP 代理处理 @Transactional,类内 this 自调用会绕过代理。本文用调用路径、拆分服务、代理引用和回滚验证说明如何定位并修复事务边界问题。129 收藏 -
Java Jackson 处理多态 JSON 时,使用业务基类、短类型名和 PolymorphicTypeValidator 白名单限制允许的子类型,并覆盖未知类型与不兼容类型的拒绝测试。367 收藏 -
Java HttpClient 在 JDK 25 及以上可用 BodyHandlers.limiting 限制下游收到的响应体字节数,超限会取消上游并以 IOException 结束;JDK 11 到 24 则可用自定义 Flow.Subscriber 实现同样的硬上限。263 收藏 -
用 Java NIO FileChannel、临时文件和 checkpoint 实现可恢复的大文件复制,处理短传输、force、源文件变化与最终替换。157 收藏 -
Files.walk 返回的 Stream可能持有打开目录,遍历结束不代表资源已经及时释放。本文说明显式关闭的原因、正确写法,以及 IOException 与 UncheckedIOException 的处理边界。 373 收藏 -
Java Stream 使用 groupingBy 分组时,想让结果按输入中键第一次出现的顺序遍历,应指定 LinkedHashMap::new;同时要区分外层 Map 键顺序、组内 List 顺序,以及并行流和 TreeMap 的不同语义。366 收藏 -
Java 虚拟线程适合承载阻塞 IO,但不应拿固定线程池限制资源并发。本文用 Semaphore 配合虚拟线程执行器,说明如何按连接池、上游限额和 CPU 预算设置可观察的并发边界。415 收藏