java教程技术文章
-
Java record 可通过 getRecordComponents 保持组件声明顺序。本文实现类型级名称与访问器读取计划,批量直接写入输出端,减少逐行容器和重复元数据构建,并说明访问权限、装箱及格式兼容边界。479 收藏 -
Java record 反射排查:先用 isRecord 判断类型,再按 record 头部声明顺序读取 RecordComponent,最后通过 accessor 读取实例值,区分 null、空数组和字段顺序不保证。194 收藏 -
用 Class.isRecord 和 getRecordComponents 读取 Java record 组件,并通过 RecordComponent 的名称、类型和访问器保留 record header 顺序。本文给出可复用的实例读取方法,并说明普通类、空 record、调用异常与缓存边界。199 收藏 -
Java 虚拟线程的同步块 pinning 要按 JDK 版本判断,JDK 24 已改变监视器相关限制。本文通过短临界区与批次私有缓冲示例,说明锁竞争、额外分配及资源所有权的处理方法。200 收藏 -
Java 虚拟线程在 synchronized 同步块中执行阻塞操作时可能发生 pinned,让载体线程无法及时复用。本文按现象、证据、修复和反向验证排查,说明何时保留 synchronized,何时考虑 ReentrantLock。495 收藏 -
Java 虚拟线程在 JDK 21 及更早版本中,如果在 synchronized 持锁期间发生阻塞,可能把 carrier 一起占住。本文用最小示例解释 pinned 的成因、JDK 24+ 的版本变化、ReentrantLock 改写边界,以及 JFR 和 jcmd 的观察方法。420 收藏 -
用 Java Phaser 管理动态参与者,讲清 register、阶段到达等待和 arriveAndDeregister 的配合方式,以及阶段不推进时的排查边界。368 收藏 -
CompletableFuture 超时备用值不负责终止底层任务。本文区分正常空值、异常与等待超时,通过独立副本示例说明响应降级,并给出客户端期限、资源释放及监控处理方法。339 收藏 -
CompletableFuture 的 completeOnTimeout 可以让调用方在时间预算耗尽后拿到备用值,但它不等于强制终止后台 supplier。本文给出可复用的超时包装方法,并说明 orTimeout、协作式取消、线程池与日志边界。298 收藏 -
用JVM Class Data Sharing生成可复用的JSA归档,覆盖classlist采集、-Xshare:dump、运行时命中日志,以及类表为空和归档失效的排查边界。320 收藏 -
Java StringTokenizer 的三参数构造器把 returnDelims 设为 true 后,分隔符会以独立 token 返回。本文说明内容与符号的遍历顺序、连续分隔符、Unicode code point、异常边界,以及何时改用 split 或正则表达式。318 收藏 -
Java 26 API 可按模块、包、类型逐层定位。文章以 Map、String 和 Connection 为例,说明完整类型名、模块导出与包名的区别,并提供不连接数据库的模块引用练习。427 收藏 -
StringJoiner.merge 合并的是来源对象去掉前后缀后的内部内容;本文用最小 Java 示例解释目标格式、来源分隔符和整体元素之间的边界,并说明何时应该改用逐个 add。391 收藏 -
讲清 Java Pattern 为什么会在重叠量词和失败分支下产生灾难性回溯,并用 possessive quantifier、atomic group 和输入边界给出可落地的改写与防护思路。185 收藏 -
使用 Java NIO FileChannel 的定位写入方法,把 ByteBuffer 写到指定字节偏移;同时处理部分写入、追加模式、重叠区域、文件锁与 force 落盘边界。346 收藏