問題內容
我想知道在 java 中,如果我在同一個物件上同步兩次,是否會出現任何奇怪的行為?
場景如下
pulbic class SillyClassName { object moo; ... public void method1(){ synchronized(moo) { .... method2(); .... } } public void method2(){ synchronized(moo) { doStuff(); } } }
兩種方法都使用該物件並在其上同步。當第一個方法呼叫第二個方法時,第二個方法會因為被鎖定而停止嗎?
我不這麼認為,因為它是同一個線程,但我不確定是否會發生任何其他奇怪的結果。
正確答案
可重入
同步區塊使用可重入鎖定,這表示如果執行緒已經持有鎖,它可以毫無問題地重新取得它。因此您的程式碼將按您的預期工作。
引用截至 2015 年 1 月...
我認為我們必須使用可重入鎖來完成您想要做的事情。以下是 http 的片段: //docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/locks/ReentrantLock.html。
雖然我沒有嘗試過,但我想如果你想做上面的事情,你必須使用可重入鎖。
以上是在同一個物件上同步兩次?的詳細內容。更多資訊請關注PHP中文網其他相關文章!
陳述
本文轉載於:stackoverflow。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
刺客信條陰影:貝殼謎語解決方案
2 週前ByDDD
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

WebStorm Mac版
好用的JavaScript開發工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Linux新版
SublimeText3 Linux最新版

記事本++7.3.1
好用且免費的程式碼編輯器