如果我有
class A {
public int a;
public synchronized void myMethod() {
Thread.sleep(1000)
}
}
如果一个线程正在运行myMethod
,a
属性是否会被阻止用于访问和修改该a实例上的其他线程?
简洁地回答您的问题:不,它不会阻止其他线程访问/修改属性。
详细回答:synchronized
是Java线程机制的关键部分。这就是线程如何相互等待。您还应该看到Object.wait和Object.notive/.notifyAll.Synchronized是关于线程执行控制,而不是关于数据泄漏。