synchronized的可重入怎么实现的
生活随笔
收集整理的這篇文章主要介紹了
synchronized的可重入怎么实现的
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
● 請(qǐng)說(shuō)明一下synchronized的可重入怎么實(shí)現(xiàn)。
考察點(diǎn):鎖
參考回答:
每個(gè)鎖關(guān)聯(lián)一個(gè)線程持有者和一個(gè)計(jì)數(shù)器。當(dāng)計(jì)數(shù)器為0時(shí)表示該鎖沒(méi)有被任何線程持有,那么任何線程都都可能獲得該鎖而調(diào)用相應(yīng)方法。當(dāng)一個(gè)線程請(qǐng)求成功后,JVM會(huì)記下持有鎖的線程,并將計(jì)數(shù)器計(jì)為1。此時(shí)其他線程請(qǐng)求該鎖,則必須等待。而該持有鎖的線程如果再次請(qǐng)求這個(gè)鎖,就可以再次拿到這個(gè)鎖,同時(shí)計(jì)數(shù)器會(huì)遞增。當(dāng)線程退出一個(gè)synchronized方法/塊時(shí),計(jì)數(shù)器會(huì)遞減,如果計(jì)數(shù)器為0則釋放該鎖。
總結(jié)
以上是生活随笔為你收集整理的synchronized的可重入怎么实现的的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 锁和同步的区别
- 下一篇: 非公平锁和公平锁在reetrantloc