由于特定类型的所有零长度数组都是相同的,因此 JVM 是否会优化零长度数组的分配以对所有此类分配使用一个共享实例?
不。它可能不会这样做,因为每个创建的零长度数组对象都可以用作不同的同步监视器。甲骨文说 http://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html:
同步是围绕称为内在锁或监视器锁的内部实体构建的......
每个对象都有一个与其关联的内在锁。
例如,在下面的代码中,不同的线程可以调用x.methodA()
and x.methodB()
没有阻塞。
private final int[] a;
private final int[] b;
Ctor(int n) {
a = new int[n];
b = new int[n];
}
public final methodA() {
synchronized(a) {
...
}
}
public final methodB() {
synchronized(b) {
...
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)