為什么JDK 15要廢棄偏向鎖?
點擊關注公眾號,Java干貨及時送達
在JDK 1.7中,引入了偏向鎖的概念來優(yōu)化synchronized的性能,但是偏向鎖,在JDK 15中已經(jīng)被廢棄了。
那么,為什么呢?(https://openjdk.org/jeps/374 )
JDK 15決定廢棄偏向鎖的主要原因是:
在過去,Java 應用通常使用的都是 HashTable、Vector 等比較老的集合庫,這類集合庫大量使用了 synchronized 來保證線程安全。
所以偏向鎖技術作為synchronized的一種優(yōu)化手段,可以減少無鎖競爭情況下的開銷,通過假定一個鎖一直由同一線程擁有,從而避免執(zhí)行比較和交換的原子操作。
然而,隨著Java應用程序的發(fā)展和優(yōu)化,過去能夠從偏向鎖中獲得的性能提升在當今的應用中不再明顯。許多現(xiàn)代應用程序使用了不需要同步的集合類或更高性能的并發(fā)數(shù)據(jù)結構(如ConcurrentHashMap、CopyOnWriteArrayList等),而不再頻繁地執(zhí)行無爭用的同步(synchronized)操作。
還有就是官方在文檔中提到的,偏向鎖的引入導致代碼很復雜,給HotSpot虛擬機中鎖相關部分與其他組件之間的交互也帶來了復雜性。這種復雜性使得理解代碼的各個部分變得困難,并且阻礙了在同步子系統(tǒng)內(nèi)進行重大設計更改。因此,廢棄偏向鎖有助于減少復雜性,使代碼更容易維護和改進。
總之,廢棄偏向鎖是為了減少復雜性、提高代碼可維護性,并鼓勵開發(fā)人員采用更現(xiàn)代的并發(fā)編程技術,以適應當今Java應用程序的性能需求。
關于偏向鎖被廢棄,好像知道的人并不多,現(xiàn)在技術更新迭代確實很快,有的是稍不留神自己背過的八股文就都是過時得了!
往 期 推 薦
1、小米自研“MIOS”再上熱搜,MIUI 14成收官之作?【文末送書】
2、面試官:為什么 HashMap 的加載因子是0.75?徹底懵逼了。。
![]()
點分享
![]()
點收藏
![]()
點點贊
![]()
點在看

