我正在阅读最初来自(我相信)IBM developerworks 站点的线程教程。在其中,他们讨论了同步关键字以及同步代码块如何被实际对象锁定,而不是代码块本身。
例如,在下面的代码中,作者指出即使静态类 '<code>Thingie 的setLastAccess
方法被列为同步,它下面定义的两个线程也可以setLastAccess
同时调用,因为它们对 thingie 使用不同的值。但是,如果 thingie 是静态的,这是否意味着它们使用相同的值?
变量名是否只需要不同,即使它们指的是同一个对象?
public class SyncExample {
public static class Thingie {
private Date lastAccess;
public synchronized void setLastAccess(Date date) {
this.lastAccess = date;
}
}
public static class MyThread extends Thread {
private Thingie thingie;
public MyThread(Thingie thingie) {
this.thingie = thingie;
}
public void run() {
thingie.setLastAccess(new Date());
}
}
public static void main() {
Thingie thingie1 = new Thingie(),
thingie2 = new Thingie();
new MyThread(thingie1).start();
new MyThread(thingie2).start();
}
}