-
虚拟线程支持 ThreadLocal,但继承策略不能靠默认值猜测。本文用 Thread.Builder 关闭不需要的 InheritableThreadLocal 继承,并用 Java 25 ScopedValue 管理只读上下文的生命周期。
-
使用 JDK 自带 jcmd 定位 Java 进程,执行 Thread.print 查看线程栈、状态与锁信息,并学习如何把快照落盘及正确解读 RUNNABLE、BLOCKED 和 WAITING。
-
Java ProcessHandle.Info 可以读取进程的可执行命令、参数、命令行、启动时间、用户和 CPU 时间,但这些字段都可能因平台和权限返回空 Optional。本文用一段可复用的诊断代码解释字段差异和安全处理方式。
-
讲清 JDBC 语句关闭与 ResultSet 的联动关系,以嵌套 try-with-resources 管理读取作用域,并说明借用连接、游标逃逸及主体异常与 suppressed 关闭异常的处理边界。
-
Java Matcher 可以通过 region(start, end) 把搜索限制在原字符串的半开区间内。本文用具体示例说明 find、matches、lookingAt 的范围变化,并解释 anchoring bounds、transparent bounds 与 lookaround 的边界差异。
-
Java Instant 按分钟截断时直接使用 truncatedTo(ChronoUnit.MINUTES),结果会把秒和纳秒置零。本文说明 UTC 时间线、不可变返回值、可用单位和本地时区边界。
-
用 HttpRequest.Builder.timeout 为单个 Java HttpClient 请求设置独立时限,区分 connectTimeout、请求超时、HTTP 状态码与同步异步异常处理。
-
Java Semaphore 用许可数限制同时进入资源区的任务数量。本文围绕 acquire、release 与 tryAcquire 超时,说明数据库连接、文件句柄或外部 API 配额的并发控制写法,并解释公平性选择与许可泄漏边界。
-
通过 Thread.ofVirtual 构建有限阻塞任务,讲清 start 与 unstarted、join 等待、失败记录及 interrupt 的协作取消边界,避免将线程终止误判为业务成功。
-
Java ExecutorService 的 close 会先拒绝新任务,再等待已提交任务完成并终止线程池。本文用小实验区分 close、shutdown、shutdownNow 与 awaitTermination 的等待语义,并给出中断和超时处理写法。
-
Java Stream takeWhile 不是筛出全部匹配项,而是在有序流中保留满足谓词的最长连续前缀。本文用具体数据说明首个 false、无状态谓词、unordered 和并行流的边界。
-
用订单标签小项目演示 Stream mapMulti 如何发出零到少量结果,提供完整 Java 示例和预期输出,并比较 flatMap 的子流接口、Consumer 作用域与性能结论边界。
-
Java List.copyOf 可以按源集合的迭代顺序创建不可变列表,副本不接受增删改,也不允许 null 元素。本文用一个小实验说明源集合、列表结构和元素对象之间的边界。
-
Java 用 LinkedHashMap 实现轻量 LRU 缓存时,应把 accessOrder 设为 true,并在 removeEldestEntry 中用 size 大于容量上限触发淘汰。本文说明访问顺序、容量边界、常见操作和线程安全注意事项。
-
Java 进程 RSS 持续上涨时,先用 jcmd VM.native_memory 建立基线,再用 summary.diff 或 detail.diff 判断是 JVM 子系统、线程、类元数据还是 NMT 未覆盖的第三方原生内存。