知其然,知其所以然
Java 内部原理 2026-07-14

线程优先级真实验证:setPriority() 到底有没有用

真实在10核机器上让MIN_PRIORITY和MAX_PRIORITY两个线程同时空转,三轮真实测试比例分别是1.04、0.71、0.91——高优先级线程有时反而比低优先级线程做的工作更少,证明setPriority()只是调度建议,不是保证。

Java 线程 调度 动画演示
Java 内部原理 2026-07-13

守护线程真实验证:JVM 退出时真实不等它跑完

真实起一个睡眠5秒的守护线程,main线程立刻结束,真实测出整个JVM进程只用了0.073秒就退出;真实对照非守护线程场景,JVM真实等待它跑完才退出;真实验证线程默认会继承创建它的线程的daemon状态。

Java 线程 JVM 动画演示
Java 内部原理 2026-07-12

ByteBuffer flip/clear/compact 真实验证:position 和 limit 到底怎么变

真实验证 flip() 把 limit 设为当前 position;真实验证 clear() 只重置指针不清空底层数组数据;真实验证 compact() 把未读完的数据真实搬到buffer开头;真实验证 rewind() 只重置position不动limit。

Java NIO Buffer 动画演示
Java 内部原理 2026-07-11

String.format() 真实开销:比 + 拼接慢十几倍的原因

真实测出 50万次循环里 String.format() 比 + 拼接慢了13倍多,真实原因是每次调用都要重新解析格式字符串;还有一个意外发现:手写的 StringBuilder 链式调用真实比编译器生成的 + 拼接更慢。

Java String 性能 动画演示
Java 内部原理 2026-07-10

不可变集合真实验证:List.of() 和 unmodifiableList() 的真实差异

真实验证 List.of() 和 Collections.unmodifiableList() 都会在 add() 时抛异常,但底层机制完全不同:unmodifiableList() 只是只读视图,底层集合变了视图真实同步跟着变;List.of() 真实不允许null元素。

Java 集合 不可变 动画演示
Java 内部原理 2026-07-09

枚举单例真实验证:反射和反序列化对枚举真实无效

真实用反射攻击一个私有构造器的普通单例类,真实创造出第二个实例;真实用同样的反射手法攻击枚举单例,真实抛出 NoSuchMethodException;真实验证枚举经过序列化再反序列化后,得到的对象和原实例真实是同一个。

Java 枚举 单例 动画演示
Java 内部原理 2026-07-08

静态嵌套类 vs 非静态内部类真实验证:this$0 隐藏引用的真实差异

真实用反射对比静态嵌套类和非静态内部类:非静态内部类真实携带一个 this$0 隐藏字段和一个隐藏构造器参数,指向外部类实例;静态嵌套类真实没有这个字段,构造器参数真实是空数组。

Java 内部类 反射 动画演示
Java 内部原理 2026-07-07

Object.clone() 浅拷贝真实验证:数组和集合字段真实共享引用

真实验证 Object.clone() 默认是浅拷贝:数组字段和集合字段真实是同一个引用,修改克隆体会真实影响原对象;真实对照一个手动实现深拷贝的版本,验证深拷贝后两者才真正互不影响。

Java clone 对象 动画演示
Java 内部原理 2026-07-06

注解 RetentionPolicy 真实验证:反射到底能读到哪几种保留策略

真实用反射验证同时标注 SOURCE/CLASS/RUNTIME 三种保留策略注解的类,运行时 getAnnotations() 只能真实读到 RUNTIME 一个;真实验证 SOURCE 注解的定义本身作为一个类依然存在,只是标注行为在编译后没有留下痕迹。

Java 注解 反射 动画演示
Java 内部原理 2026-07-05

位运算与 HashMap 容量真实验证:为什么必须是 2 的幂

真实复刻 HashMap 的 tableSizeFor 算法验证任意初始容量都会被规整成2的幂;真实用反射拿到 HashMap 内部 table 数组长度对照;真实验证只有容量是2的幂时,(n-1)&hash 才和 hash%n 完全等价,容量是15这种非2的幂时第一个不一致的样例真实被找出来了。

Java HashMap 位运算 动画演示
Java 内部原理 2026-07-04

CountDownLatch 与 CyclicBarrier 真实对比:一次性和可复用的区别

真实验证 CountDownLatch 是一次性的,计数归零后无法重置,再次 await() 会立刻返回;真实验证 CyclicBarrier 在所有参与线程到达屏障点后会自动重置,可以在同一个 barrier 对象上反复复用多轮,并真实捕获每轮的 barrierAction 回调触发时机。

Java 并发 同步工具 动画演示
Java 内部原理 2026-07-03

ThreadPoolExecutor 拒绝策略真实验证:四种策略到底怎么表现

真实用1核心1队列的线程池把四种内置 RejectedExecutionHandler 逐个触发:AbortPolicy 真实抛出异常;CallerRunsPolicy 真实验证被拒绝任务由提交者线程同步执行;DiscardPolicy 真实静默丢弃;DiscardOldestPolicy 真实验证排队最久的任务被挤掉、从未执行。

Java 线程池 并发 动画演示
京ICP备2026067502号-1京公网安备11010502063487号