java教程技术文章
-
围绕 Java 21 pattern switch 和 sealed 类型,说明 permitted 分支覆盖、when 守卫、无守卫兜底、支配关系与 null 边界的实现方法。448 收藏 -
围绕 Java record 的紧凑构造器说明组件校验、参数归一化、隐式字段赋值、重载构造器委托与 List.copyOf 防御性复制的适用边界。345 收藏 -
文章 · java教程 | 2天前 | 虚拟线程 · Java StructuredTaskScope Java结构化并发 Java子任务取消 StructuredTaskScope结果汇总 Java虚拟线程并发
围绕 JDK 25/26 预览 API,讲清 Java StructuredTaskScope 如何组织子任务、在失败时取消未完成任务,并通过 join 与 Subtask.get 汇总结果,同时比较它与 CompletableFuture、ExecutorService 的适用边界。117 收藏 -
Java 虚拟线程出现 carrier 被固定时,先按 JDK 版本判断 synchronized 是否属于 pinning 来源,再用 JFR 的 jdk.VirtualThreadPinned 和 jdk.tracePinnedThreads 定位阻塞栈,最后决定保留 synchronized、拆分临界区或改用 ReentrantLock。149 收藏 -
Java Pattern 的 named group 不能在同一个正则中重复定义。本文区分重复定义、量词覆盖和 find 多次匹配三种情况,给出 group(String) 的读取方式、异常边界与完整示例。305 收藏 -
Java G1 日志出现 humongous allocation 时,应先确认实际 Region 大小,再用半个 Region 判断阈值,并结合 Humongous regions、Old regions、并发标记和 Full GC 证据区分偶发大对象与持续空间压力。184 收藏 -
Java JDBC 处理 SQLException 时,先用 SQLState 做跨驱动的错误分类,再用 vendorCode 映射厂商细节,结合异常类型和异常链决定重试、降级与告警。229 收藏 -
Java Jackson 反序列化 record 缺少 JSON 字段时,默认值应放在 canonical 构造器中,并明确处理 null、集合和基本类型边界。278 收藏 -
Java 的 requires transitive 会把目标模块加入下游的隐式可读性,但不会自动导出所有包。本文用 app、facade、logging 三模块示例,解释下游编译边界、exports 配合关系,以及 javac 和 java 的排查方法。257 收藏 -
Java ServiceLoader 在模块路径下找不到 provider,通常不是接口实现消失,而是 uses、provides、模块路径或 provider 实例化条件没有同时满足。本文用最小模块示例拆开排查。455 收藏 -
Java CompletableFuture 使用 whenComplete 记录成功值和异常时,如何保持上游结果语义?本文用代码和边界表说明观察、异常传播及验证方法。439 收藏 -
Java HttpClient 使用 BodyHandlers.ofPublisher() 时,响应体 Publisher 只能订阅一次;本文用 Flow.Subscriber 说明 request、cancel、回调和连接复用边界。385 收藏 -
Java 21 的 SequencedMap 可以用 reversed() 得到反向视图。本文用 LinkedHashMap 说明如何成对遍历键值、验证首尾顺序,并解释视图、快照和兼容性边界。229 收藏 -
Java Stream teeing 会把同一批元素交给两个下游收集器,再合并为一个结果。本文用订单统计、Optional 空结果和 groupingBy 分组案例说明适用场景与边界。500 收藏 -
Java StructuredTaskScope 失败时,joiner 如何取消未完成子任务,FailedException、isCancelled 和 close 又分别说明什么?本文用 Java 25 预览 API 示例拆开传播链与关闭边界。400 收藏