2011-09-23 131 views
8

當同步塊用於對象實例的同步時,線程將競爭進入對象的隱式監視器。有一次,任何特定的線程進入監視器,其他線程必須等待進入。然後對象同步

synchronized(object){ 
    // some code here 
    // no function call 
} 

不得強制採取任何特定類型的對象。因此任何對象類型都可以在這裏使用,因爲每個對象都有它的隱式監視器。

請回復我這是真的嗎?

+6

非常有禮貌和禮貌! –

+0

@Josh:實際上恰恰相反 - 使用術語「尊敬的程序員」意味着我們中的一些人*不是*(當然,這種斷言是真實的)。 – MusiGenesis

+3

每個懂得我在問候每個人的人都需要再次迎接。感謝Pordon先生,感謝我對每一個人的尊重。 和MusiGenesis,每個認爲自己值得尊重的人都是值得尊敬的。 那些認爲我的尊重是爲他們着想的人,很高興 和其他............ – user961690

回答

9

是的,每個Java對象都可以充當監視器。

而且由於這是一個簡單的答案,獎金,這是一個有趣的閱讀:Does the JVM create a mutex for every object in order to implement the 'synchronized' keyword? If not, how?

還要注意,C#確實與他們的對象,也有值類型(不是顯示器類似的東西)

+0

非常感謝你親愛的 – user961690

+7

我愛「親愛的」!就像我的奶奶在StackOverflow上發帖一樣... –

+0

那「親愛的」是什麼意思? –

5

請記住,如果您的變量爲null,則無法鎖定它。另外,雖然像Integer這樣的東西是對象,但是intfloat而不是。您可以鎖定Integerint[],但不鎖定int

+1

非常感謝您親愛的 – user961690