Java面试题 synchronized底层实现原理?它与lock相比有什么优缺点?
生活随笔
收集整理的這篇文章主要介紹了
Java面试题 synchronized底层实现原理?它与lock相比有什么优缺点?
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
首先那些說看過synchronized源碼的基本都是大聰明,synchronized根本點(diǎn)不進(jìn)去,想弄懂它的實(shí)現(xiàn)原理,我們只能通過看編譯好的字節(jié)碼文件
原理:
基于對(duì)象的監(jiān)視器(ObjectMonitor),我們?cè)谧止?jié)碼文件里面可以看到,在同步方法執(zhí)行前后,有兩個(gè)指令,方法前monitorenter,方法后monitorexit;?
與lock對(duì)比:
1、synchronized不需要手動(dòng)釋放鎖,lock需要在鎖用完后進(jìn)行unlock;
2、synchronized只能是默認(rèn)的非公平鎖,lock可以指定使用公平鎖或者非公平鎖;
3、lock提供的Condition(條件)可以指定喚醒哪些線程,而synchronized只能隨機(jī)喚醒一個(gè)或者全部喚醒;
總結(jié)
以上是生活随笔為你收集整理的Java面试题 synchronized底层实现原理?它与lock相比有什么优缺点?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java面试题 简述jvm内存模型?
- 下一篇: Java的二十三种设计模式(单例模式、工