2025年08月1日的内容
既然CPU有缓存一致性协议(MESI),为什么JMM还需要volatile关键字?
🧠 为什么 mesi 协议并不足以保证 java 中的“可见性”语义?1. mesi 是硬件层级的缓存一致性,volatile 是语言层级的可见性保证mesi 主要解决“同一物理地址在多核缓存中的副本一致性问题”;根据mesi,CPU某核(假设CPU0)的缓存行(包含变量x)是M S 或E的时候,如果总线嗅探到了变量x被其其他核(比如CPU1)执行了……
08-01 立刻查看
HashMap负载因子
HashMap1. Hash 冲突后的数据结构变化(jdk8 之后的优化)在 jdk8 之前,HashMap 发生冲突后使用的是链表结构,导致在极端情况下时间复杂度退化为 O(n)。jdk8 开始引入红黑树结构优化:当某个桶(链表)中的元素个数超过 TREEIFY_THRESHOLD = 8 且容量超过 MIN_TREEIFY_CAPACITY ……
08-01 立刻查看