synchronized 只能锁相同的代码块吗

2019-08-24 15:53:59 +08:00
 monetto

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 方法?

2133 次点击
所在节点    Java
1 条回复
monetto
2019-08-24 16:19:14 +08:00
搞错了...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/594760

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX