synchronized锁的升级
生活随笔
收集整理的這篇文章主要介紹了
synchronized锁的升级
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在分析markword時(shí),提到了偏向鎖、輕量級(jí)鎖、重量級(jí)鎖。在分析這幾種鎖的區(qū)別時(shí),我們先來思考一個(gè)問題
使用鎖能夠?qū)崿F(xiàn)數(shù)據(jù)的安全性,但是會(huì)帶來性能的下降。不使用鎖能夠基于線程并行提升程序性能,但是卻不能保證線程安全性。這兩者之間似乎是沒有辦法達(dá)到既能滿足性能也能滿足安全性的要求。
hotspot虛擬機(jī)的作者經(jīng)過調(diào)查發(fā)現(xiàn),大部分情況下,加鎖的代碼不僅僅不存在多線程競(jìng)爭(zhēng),而且總是由同一個(gè)線程多次獲得。所以基于這樣一個(gè)概率,是的synchronized在JDK1.6之后做了一些優(yōu)化,為了減少獲得鎖和釋放鎖帶來的性能開銷,引入了偏向鎖、輕量級(jí)鎖的概念。因此大家會(huì)發(fā)現(xiàn)在synchronized中,鎖存在四種狀態(tài)
分別是:無鎖、偏向鎖、輕量級(jí)鎖、重量級(jí)鎖;?鎖的狀態(tài)根據(jù)競(jìng)爭(zhēng)激烈的程度從低到高不斷升級(jí)
?
總結(jié)
以上是生活随笔為你收集整理的synchronized锁的升级的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么任何对象都可以实现锁
- 下一篇: 偏向锁的基本原理