[英]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.