V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
monetto
V2EX  ›  Java

synchronized 只能锁相同的代码块吗

  •  
  •   monetto · 2019-08-24 15:53:59 +08:00 · 2130 次点击
    这是一个创建于 1701 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    monetto
        1
    monetto  
    OP
       2019-08-24 16:19:14 +08:00
    搞错了...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2725 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 12:14 · PVG 20:14 · LAX 05:14 · JFK 08:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.