面试题:Java中为什么要引入轻量级锁?

接上一篇文章,有几个网友问我,既然提到了偏向锁,那就再一起说一说轻量级锁吧。

为什么要引入轻量级锁?

原因还是为了性能。轻量级锁考虑的是竞争锁对象的线程不多,而且线程持有锁的时间也不长的情景。因为阻塞线程需要 CPU 从用户态转到内核态,代价较大,如果刚刚阻塞不久这个锁就被释放了,那这个代价就有点得不偿失了,因此这个时候就干脆不阻塞这个线程,让它自旋的等待锁释放。

上面已经解释过了,就是 JVM 的设计者发现,当阻塞线程需要 CPU 从用户态转到内核态,且刚阻塞不久这个锁就会被释放了的这种情况,为了缩小性能消耗,引入了轻量级锁。

从上面也可以看到,轻量级锁的优点也很明显,竞争的线程不会阻塞,使其自旋,提高程序的响应速度。但是缺点也很明显,线程不能多,如果长时间获取不到锁,长时间的自旋会造成 CPU 消耗。

面试题:Java中为什么要引入轻量级锁?

: » 面试题:Java中为什么要引入轻量级锁?

原创文章,作者:jamestackk,如若转载,请注明出处:https://blog.ytso.com/252215.html

(0)
上一篇 2022年5月4日
下一篇 2022年5月4日

相关推荐

发表回复

登录后才能评论