在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Java  Linux  網(wǎng)絡(luò)安全/ Java: 鎖重入對(duì)性能影響有多大?

Java: 鎖重入對(duì)性能影響有多大?

如下,commonDo可能被多個(gè)方法(有可能不同步的)調(diào)用,在specialDo調(diào)用commonDo會(huì)重入鎖,對(duì)性能影響大嗎?
是不是最好把commonDo()的代碼直接放在specialDo里比較好?雖然代碼冗余,但是性能好?

class MyClass{
    public synchronized void specialDo(){
       ...
       commonDo();
    }

    public synchronized void commonDo(){
       ...
    }
}
回答
編輯回答
落殤

synchronized底層是通過(guò)monitorenter 和 monitorexit指令來(lái)實(shí)現(xiàn)的。具體介紹推薦此文
synchronized可重入的機(jī)理,只是在內(nèi)部判斷一下當(dāng)前線程是否具有鎖住對(duì)象的monitor權(quán)限,如果當(dāng)前線程已經(jīng)擁有了,則只是簡(jiǎn)單地作計(jì)數(shù)+1。所以鎖是否重入并不影響性能。

2017年1月10日 11:23
編輯回答
我不懂

這個(gè)方法上的鎖有用嗎?如果每個(gè)線程都會(huì)創(chuàng)建一個(gè)對(duì)象,鎖是沒(méi)有任何用處的

2017年9月12日 23:48
編輯回答
黑與白

重進(jìn)鎖僅僅在基數(shù) +1,性能影響基本可以忽略。類似的做法,可以參考ReentrantLock

2018年8月29日 18:41