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