0
我注意到有趣(令人驚訝的對我來說)行爲:爲什麼我不能使用原語作爲syncronized部分的互斥體?
public void m(){
int primitive=1;
synchronized (primitive) {
}
}
此代碼生成以下內容:
int is not a valid type's argument for the synchronized statement
你能解釋一下爲什麼嗎?
[用什麼原語來實現synchronized關鍵字?](http://stackoverflow.com/questions/15684530/what-primitive-is-used-to-implement-the-synchronized-keyword) – hyde
因爲它需要一個對象。 –
要具體如何重複回答這個問題:'monitorenter'需要一個對象。基元不是對象。 JVM無法同步它們。 – hyde