搜尋
首頁Java在同一個物件上同步兩次?

問題內容

我想知道在 java 中,如果我在同一個物件上同步兩次,是否會出現任何奇怪的行為?

場景如下

pulbic class SillyClassName {

    object moo;
    ...
    public void method1(){
        synchronized(moo)
        {
            ....
            method2();
            ....
        }
    }

    public void method2(){
        synchronized(moo)
        {
            doStuff();
        }
    }
}

兩種方法都使用該物件並在其上同步。當第一個方法呼叫第二個方法時,第二個方法會因為被鎖定而停止嗎?

我不這麼認為,因為它是同一個線程,但我不確定是否會發生任何其他奇怪的結果。


正確答案


可重入

同步區塊使用可重入鎖定,這表示如果執行緒已經持有鎖,它可以毫無問題地重新取得它。因此您的程式碼將按您的預期工作。

請參考Java 教學頁面的底部內在鎖定和同步

引用截至 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

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

MantisBT

MantisBT

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

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器