美文网首页
synchronized 关键字里的锁

synchronized 关键字里的锁

作者: 雪驹 | 来源:发表于2017-03-09 17:57 被阅读0次

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){
        // 代码块
      }
}

相关文章

网友评论

      本文标题:synchronized 关键字里的锁

      本文链接:https://www.haomeiwen.com/subject/mmcggttx.html