java教程技术文章
-
虚拟线程支持 ThreadLocal,但继承策略不能靠默认值猜测。本文用 Thread.Builder 关闭不需要的 InheritableThreadLocal 继承,并用 Java 25 ScopedValue 管理只读上下文的生命周期。126 收藏 -
JEP 465 撤回后,已有 STR 与自定义模板处理器代码应按用途迁移到稳定 API,并保留格式化、国际化与安全边界。123 收藏 -
Java ForkJoinPool 的 asyncMode 用于调整工作线程对未 join 任务的本地调度策略。本文用代码说明默认栈式调度与本地 FIFO 的差异,并给出并行度、任务类型和生命周期的选择边界。121 收藏 -
Java 25 的 StructuredTaskScope 可以在 open 时通过 withTimeout 配置整个作用域的统一超时。本文用一个双子任务示例说明超时起点、TimeoutException、取消中断和 close 等待边界,并补充旧版 joinUntil 的差异。118 收藏 -
Java Map.computeIfAbsent 的映射函数返回 null 时不会记录键值映射。本文按触发条件、返回结果、异常边界和缓存策略拆开说明,帮助你区分未命中、空值与计算失败。117 收藏 -
使用 Java Time Chronology 处理非 ISO 日历时,把 ISO 日期留在存储和计算层,在界面层通过 DateTimeFormatter.withChronology 格式化,并正确区分 Locale、Era、y 与 u 的边界。117 收藏 -
Java 用 LinkedHashMap 实现轻量 LRU 缓存时,应把 accessOrder 设为 true,并在 removeEldestEntry 中用 size 大于容量上限触发淘汰。本文说明访问顺序、容量边界、常见操作和线程安全注意事项。115 收藏 -
JDK 26 为 java.net.http.HttpClient 提供 HTTP/3 能力,但迁移重点不是改一行协议常量,而是核对 HTTPS、代理、TLS、服务端能力与降级策略。本文给出可执行的评估矩阵和灰度清单。114 收藏 -
文章 · java教程 | 6天前 | Java · 事务 · 代理 · spring · 排错 · java Spring事务 @Transactional TransactionTemplate 事务代理 自调用
Spring 默认 proxy 模式只拦截从代理进入的外部调用,同一个 Bean 内部的 this 自调用会绕过 @Transactional。本文用调用关系图和代码说明如何拆分服务、显式走代理、使用 TransactionTemplate,以及何时考虑 AspectJ。114 收藏 -
Java Gatherer 中只有在 integrator 不会因业务条件提前停止输入时,才适合用 Integrator.Greedy 表达契约。本文从返回值、下游信号、并行合并和边界场景说明判断方法。112 收藏 -
用 ValueSource、CsvSource 和 MethodSource 组织 JUnit 5 参数化测试输入,覆盖单值、表格与动态对象场景。110 收藏 -
Java 21 的 List.reversed() 返回反向有序视图,不是副本。本文用 ArrayList 和只读 List 对比说明 set、remove、addFirst 是否会写回原集合,以及什么时候必须显式复制。105 收藏 -
Java ScopedValue 的内层绑定只在嵌套动态作用域中遮蔽外层值,退出后自动恢复。本文用 where、run、get、isBound 和 orElse 说明嵌套读取、异常边界、线程继承与不可变上下文的使用方法。104 收藏 -
通过 LinkedHashMap、TreeMap 和下游 Collector,分别控制 Java Stream 分组后的键顺序与组内元素顺序。104 收藏 -
Java HttpClient 可以用 HttpRequest.BodyPublishers.ofFile(Path) 把本地文件作为请求体发送。本文说明文件请求体的构造关系、Content-Type 设置、异常处理和与响应文件下载的区别。103 收藏