synchornized和volatile

  • synchornized
    • 修饰实例方法
      作用于当前实例加锁,进入同步代码前要获得当前实例的锁,锁住的是对象的实例(this);
      public sychornized void func()
    • 修饰静态方法
      作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁锁住的是Class实例(类对象),又因为Class的相关数据存储在永久带PermGen(jdk1.8则是metaspace),永久带是全局共享的,因此静态方法锁相当于类的一个全局锁,会锁所有调用该方法的线程;
      public static synchornized void func()
    • 修饰代码块
      指定加锁对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁。锁住的是所有以该对象为锁的代码块。
      synchornized(对象){ //临界区 }
      note: 类对象和实例对象不一样
  • synchornized底层原理分析
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容