Thread1 类和 Thread2 类是两个不同的类。 T1 的 run 方法中对 class3 的 static integer 使用 syn 锁上, while 死循环输出。 T2 的 run 方法与 T1 相同。
但是创造出的 T1 t1 和 T2 t2 同时运行。却能同时改变值。但是方法都对 class3 Integer 上锁了。
如果 t1 和 t2 是同一个类例如 T1 类的话,确实是能把 class3 的 static integer 锁上的。 但是 t1 和 t2 分别属于 T1 类和 T2 类的话,syn 就和没加一样。
有人知道这是什么原理呢? 如果我想实现无论什么方法都对一个变量上锁的话,那是不是只能封装这个类自己的 set Value 方法?