从双重检查锁到枚举单例:Java线程安全实践中的道与术
2022年双十一前夕,笔者所在团队的全局配置管理类突然出现诡异现象:在2000+QPS的配置刷新场景下,日志中频繁出现多个ConfigManager实例的哈希码。这直接导致部分服务器读取到过期配置,险些酿成重大事故。通过Arthas的monitor命令监控发现
2022年双十一前夕,笔者所在团队的全局配置管理类突然出现诡异现象:在2000+QPS的配置刷新场景下,日志中频繁出现多个ConfigManager实例的哈希码。这直接导致部分服务器读取到过期配置,险些酿成重大事故。通过Arthas的monitor命令监控发现
事情是这样的,前几天有一个读者给我发消息,说他面试的时候遇到一个奇形怪状的面试题。
volatile是Java语言提供的一种轻量级的同步机制,主要用于确保多线程环境下对变量的可见性。当一个线程修改了一个volatile变量的值,这个修改对其他线程是立即可见的,也就是说,如果一个线程修改了一个volatile修饰的变量的值,那么其他线程在读取