# 锁对象的实现原理

这里不做详细的展开,仅简单说明。

sychronized是在对象头的Mark Word区域做了标记。

# 包装类和String的特点

要想知道为什么不建议用作锁对象,需要你对包装类和String有较深入点的了解。

主要原因有两个:

  1. 锁不住
  2. 锁滥用

# 锁不住

如果修改String对象,其变量引用将指向一个新的String对象或常量池中存在的String对象,也就是存在更换对象的可能性。包装类也是一样,部分值存在缓存,会导致修改后将变量引用指向其他对象。

# 锁滥用

因为包装类中部分使用了缓存,例如long,integer,因此可能会导致多处共用一处锁对象。String类更不用说,都是使用常量池中的对象。

修改于: 8/11/2022, 3:17:56 PM