當同步塊用於對象實例的同步時,線程將競爭進入對象的隱式監視器。有一次,任何特定的線程進入監視器,其他線程必須等待進入。然後對象同步
synchronized(object){
// some code here
// no function call
}
不得強制採取任何特定類型的對象。因此任何對象類型都可以在這裏使用,因爲每個對象都有它的隱式監視器。
請回復我這是真的嗎?
當同步塊用於對象實例的同步時,線程將競爭進入對象的隱式監視器。有一次,任何特定的線程進入監視器,其他線程必須等待進入。然後對象同步
synchronized(object){
// some code here
// no function call
}
不得強制採取任何特定類型的對象。因此任何對象類型都可以在這裏使用,因爲每個對象都有它的隱式監視器。
請回復我這是真的嗎?
是的,每個Java對象都可以充當監視器。
而且由於這是一個簡單的答案,獎金,這是一個有趣的閱讀:Does the JVM create a mutex for every object in order to implement the 'synchronized' keyword? If not, how?
還要注意,C#確實與他們的對象,但也有值類型(不是顯示器類似的東西)
請記住,如果您的變量爲null
,則無法鎖定它。另外,雖然像Integer
這樣的東西是對象,但是int
或float
是而不是。您可以鎖定Integer
或int[]
,但不鎖定int
。
非常感謝您親愛的 – user961690
非常有禮貌和禮貌! –
@Josh:實際上恰恰相反 - 使用術語「尊敬的程序員」意味着我們中的一些人*不是*(當然,這種斷言是真實的)。 – MusiGenesis
每個懂得我在問候每個人的人都需要再次迎接。感謝Pordon先生,感謝我對每一個人的尊重。 和MusiGenesis,每個認爲自己值得尊重的人都是值得尊敬的。 那些認爲我的尊重是爲他們着想的人,很高興 和其他............ – user961690