先交代一下背景。
我是 java14
切换到 java8
时候发生的错误。
轻量级锁在没有竞争的时候(就自己这个线程),每次冲突依然需要执行 CAS
操作。
Java6
引入偏向锁进行优化:只有第一次使用 CAS
将线程 ID
设置到对象的 Mark Word
头,之后发现这个线程 ID
是自己的表示没有竞争,就不用重新 CAS
。以后只要不发生竞争,这个对象就归线程所有。
偏向锁的使用场景是,当多线程中,同步代码块只有一个线程操作的时候,才会考虑用这个。
Program Counter Register
程序计数器「寄存器」
final 可以修饰类、方法、变量。
non-blocking io
非阻塞 IO。
这个在 java | synchronized 优化 轻量级锁 的 E
过程有描述。
轻量级锁。