synchronized 关键字里的锁

synchronized 关键字的锁有静态态方法锁,锁是所在类的class文件,非静态方法里代码块的synchronized(this)锁,和非静态方法锁的对象是一致的。synchronized(类的class)等。原理就是对象。

1、静态方法的锁是所在类的 class 文件。

// 静态方法
public static synchronized void test(){};

备注:静态方法里不能使用 this 关键字,因为调用静态方法时堆内存里不生成对象。

2、非静态方法锁,锁其实是 this,也就是在堆内存里new出来的那个对象。

// 非静态方法
public synchronized void test(){};

3、代码块锁,锁是this关键字。指堆内存里 new 的那个对象。

public void test(){
      synchronized(this){
        // 代码块
      }
}

4、锁是某个类的字节码,一个类可以有多个字节码,只会有一个class源文件。

public void test(){
      synchronized(Car.class){
        // 代码块
      }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,767评论 18 399
  • Java8张图 11、字符串不变性 12、equals()方法、hashCode()方法的区别 13、...
    Miley_MOJIE阅读 3,731评论 0 11
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,688评论 0 11
  • 接口/抽象类意义规范、扩展、回调为其子类提供一个公共的类型 封装子类中得重复内容 定义抽象方法,子类虽然有不同的实...
    MigrationUK阅读 2,201评论 1 28
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,372评论 11 349