注:顏色和排版沒有實(shí)際意義,純粹為了好看锚国。
1托享、Synchronized原理講下:
1、Synchronized是由JVM 實(shí)現(xiàn)的一種實(shí)現(xiàn)互斥同步的一種方式顶瞒,如果你查看被Synchronized修飾過 的程序塊編譯后的字節(jié)碼夸政,會(huì)發(fā)現(xiàn),被Synchronized修飾過 的程序塊榴徐,在 編譯前后被編譯器生成了monitorenter和monitorexit兩個(gè)字節(jié)碼指令守问。
2、這兩 個(gè)指令是什么意思呢?在虛擬機(jī)執(zhí)行到monitorenter指令時(shí)坑资,首先要嘗試獲取對(duì)象的鎖:如果這個(gè)對(duì)象沒有鎖定耗帕,或者當(dāng)前線程已經(jīng)擁有了這個(gè)對(duì) 象的鎖,把鎖的計(jì)數(shù)器+ 1;當(dāng)執(zhí)行monitorexit指令時(shí)將鎖計(jì)數(shù)器-1;當(dāng)計(jì) 數(shù)器為0時(shí)袱贮,鎖就被釋放了仿便。如果獲取對(duì)象失敗了,那當(dāng)前線程就要阻塞 等待,直到對(duì)象鎖被另外一個(gè)線程釋放為止嗽仪。Java中Synchronize通過在對(duì) 象頭設(shè)置標(biāo)記荒勇,達(dá)到了獲取鎖和釋放鎖的目的。
2钦幔、對(duì)象鎖是什么枕屉?如何確定對(duì)象鎖
image.png
3、什么是可重入鎖鲤氢?為何說(shuō)Synchronized
image.png
4搀擂、JVM對(duì)java的原生鎖做了哪些優(yōu)化
image.png
5、為何說(shuō)Synchronized是非公平鎖
image.png
6卷玉、什么是消除鎖和粗化鎖
image.png
7哨颂、為什么說(shuō)Synchronized是悲觀鎖?樂觀鎖的實(shí)現(xiàn)原理又是什么相种?什么是CAS威恼,有什么特性?
image.png
8寝并、樂觀鎖一定是好的嗎箫措?
image.png
9、跟Synchronized想比衬潦,可重入鎖ReentrantLock 其實(shí)現(xiàn)原理
xx
10斤蔓、聊下AQS框架
image.png
11、Synchronized 和 ReentrantLock 的異同
image.png
12镀岛、ReentrantLock如何實(shí)現(xiàn)可重入性
image.png
13弦牡、除了ReentrantLock,你還接觸過JUC哪些并發(fā)工具漂羊?
image.png
請(qǐng)談?wù)?ReadWriteLock 和 StampedLock
image.png
public class RWSample {
private final Map<String, String> m = new TreeMap<> ( );
private final ReentrantReadWriteLock rwl = new ReentrantReadWriteLock ( );
private final Lock r = rwl.readLock ( );
private final Lock w = rwl.writeLock ( );
public String get(String key) {
r.lock ( );
System.out.println ("讀鎖鎖定! ");
try {
return m.get (key);
} finally {
r.unlock ( );
}
}
public String put(String key, String entry) {
w.lock ( );
System.out.println ("寫鎖鎖定");
try {
return m.put (key, entry);
} finally {
w.unlock ( );
}
}
}
image.png
思緒中驾锰。。走越。椭豫。。旨指。赏酥。。淤毛。。算柳。低淡。。。蔗蹋。何荚。获询。仰冠。。塘慕。皂吮。戒傻。。
image.png
思緒中蜂筹。需纳。。艺挪。不翩。。麻裳。口蝠。。津坑。妙蔗。。国瓮。灭必。。乃摹。禁漓。。孵睬。播歼。。掰读。秘狞。
image.png