簡體   English   中英

在方法調用Java上同步

[英]Synchronze on method call Java

我有一個關於我要理解的代碼塊的問題

synchronized(Name.getname())
{
   Name.getname().add(this);
}

此代碼塊與什么同步? 它是否在方法調用結果或其他方面同步。

是的,它是同步的。 您使用Name.getname()作為鎖定對象。 如果一個線程獲取了Name.getname()對象,則另一個線程將等待直到釋放對象

它與Name.getname()返回的對象同步。

就像System.out.println(Name.getname())打印Name.getname()返回的值。

在任何使用Object的地方,都可以使用Object類型的表達式。

Name實例中的getname()返回的(引用)值(或靜態方法,如果不是實例)用作鎖定對象。

我沒有添加您在其他答案中找不到的任何信息,但有時使用圖片會有所幫助。

我猜想Name.getName()返回對Singleton Name實例的引用。 如果是這樣,那么您的示例等效於此:

Name n = Name.getName();
synchronized(n) {
    n.add(this);
}

我覺得奇怪,我說,一些所謂的“名”是一個單身,這似乎很奇怪,我認為你將被允許加入this東西叫做“名”,但我不能讓你的例子任何意義除非Name.getName()始終返回相同的對象引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM