122-通过实验分析Class锁的存在

静态方法、静态代码块加锁,锁的MONITOR是什么东西?

  1. 顺序访问。两个线程抢占同一个锁。(Class锁)

    public synchronized static void m1() {}
    public synchronized static void m2() {}

    其到底是什么锁呢?

    静态方法加的锁其实是Class锁。

  2. 增加静态代码块,判定锁MONITOR是什么。

    • 暂未添加静态代码块时:

      public static void m3() {}

      m3()为静态非加锁方法,启动程序会立即运行,此时m1()会同时运行。

    • 添加静态代码块后:

      static {
          synchronized (SynchronizedStatic.class) {}
      }

      先进行一次实例化,运行静态代码块,运行完成才执行m3()m1()

    静态代码块加的锁其实是Class锁。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 tuyrk@qq.com

文章标题:122-通过实验分析Class锁的存在

文章字数:169

本文作者:神秘的小岛岛

发布时间:2019-11-27, 22:18:27

最后更新:2019-11-30, 14:27:17

原始链接:https://www.tuyrk.cn/wang-thread/122-class-lock/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏