Java final关键字和不可变性
在我之前写的线程安全那篇内容里,我提到过,在并发编程领域下,为了应付线程安全的问题,需要使用各种同步机制,比如synchronized、volatile等。毕竟如果对象的状态是共享且可变的话,多线程情况下,没有同步机制,代码迟早出问题的。那如果对象的状态是不可变的呢?
java 设计模式使用文档
基于 GoF 23 种设计模式与 Effective Java 实践整理,2026-10,示例兼容 JDK 8~21。章节按日常使用频率排序(常用的排前面)。每个模式覆盖:原理功能、使用场景、经典 Demo(JDK/Spring/业务三视角)、注意事项(含易错与过度设计风险)。
你的static final,正拖慢启动
上周给一个交易系统做启动优化,JDK 26 升上去之后,启动时间从 12 秒降到了 7 秒。排查下来,最大的贡献不是 JIT 预热,不是 G1 改进,而是一个不起眼的 JEP 526:懒加载常量(Lazy Constants)。
Java基础之面向对象: 类和对象详细解析
Java是面向对象的程序设计语言,类是面向对象的重要内容,我们可以把类当成一种自定义数据类型,可以使用类来定义变量,这种类型的变量统称为引用变量。也就是说,所有类是引用数据类型。
静态代码块和构造器的执行顺序,类初始化时机这题隐蔽得很
上周帮部门面一个五年经验的候选人,我在共享文档里贴了段代码,让他口述输出顺序。他答得很快,快到我知道他背过。然后我改了一行,把 new Child() 换成 Child.NAME,他就卡住了。这题的杀伤力从来不在执行顺序本身,而在类初始化的触发时机。
关于java final关键字的可见性
你先看看下面这段话,看看是否能理解。final关键字在并发上的作用(Java内存模型(JMM)层面):只要对象构造过程中this没有逃逸,那么构造器一结束,JMM会对所有final字段做一个冻结动作。