【发布时间】:2012-01-04 22:54:52
【问题描述】:
我读到JVM通过将共享变量的数据从主内存复制到线程的工作内存来实现同步。
例如,有这样一个类。
class Test {
private Test2 test2 = new Test2();
public void print1() {}
public synchronized void print2() {
test2.print();
}
}
如果这个Test类在多个线程中执行,并且“print2”方法在一个线程中执行,我认为Test上的锁是由一个线程获得的,其他线程必须等到锁被释放。
现在我有一个问题。如果一个线程获得了对Test的锁,是否意味着Test和Test2的数据从主内存复制到了线程的工作内存?我说的原因是在实例方法级别使用了“同步”关键字,而 test2 是 Test 类的实例变量。
我只是想澄清从主内存复制到线程工作内存的内容。
如果我错了,请纠正我。
【问题讨论】:
标签: java synchronization