java synchronized加載加鎖-線程可重入詳解及實例代碼
更新時間:2017年02月17日 11:47:18 投稿:lqh
這篇文章主要介紹了java synchronized加載加鎖-線程可重入詳解及實例代碼的相關資料,需要的朋友可以參考下
java synchronized加載加鎖-線程可重入
實例代碼:
public class ReGetLock implements Runnable { @Override public void run() { get(); } public synchronized void get() { System.out.println(Thread.currentThread().getId()); set(); } public synchronized void set() { System.out.println(Thread.currentThread().getId()); } public static void main(String[] args) { ReGetLock rgl = new ReGetLock(); new Thread(rgl).start(); } }
執(zhí)行代碼的線程到底能不能進入到set方法呢?
因為線程rgl先調(diào)用了get方法,獲取到了ReGetLock對象的鎖,那么當線程rgl想進入標有synchronized 關鍵字的set方法時,會被阻塞住,一直等待嗎?
其實是不會的,在JAVA里面,當某個線程試圖獲得一個已經(jīng)由它自己持有的鎖,那么這個請求會成功。不然會出現(xiàn)死鎖。
因此像synchronized 這種加鎖機制,線程是可重入的。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
Java調(diào)用CXF WebService接口的兩種方式實例
今天小編就為大家分享一篇關于Java調(diào)用CXF WebService接口的兩種方式實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03SpringBoot yaml語法與數(shù)據(jù)讀取操作詳解
YAML 是 “YAML Ain’t Markup Language”(YAML 不是一種標記語言)的遞歸縮寫。在開發(fā)的這種語言時,YAML 的意思其實是:“Yet Another Markup Language”(仍是一種標記語言),本文給大家介紹的非常詳細,需要的朋友可以參考下2022-07-07