美文网首页
java 多线程学习 4 synchronized 关键字解析

java 多线程学习 4 synchronized 关键字解析

作者: 邵增卫 | 来源:发表于2019-05-04 14:23 被阅读0次

synchronized关键字用于声明同步方法或者同步代码块,下面是synchronized的三种使用方式。

//同步方法
 public synchronized void sync(){
        this.close = true;
        interrupt();
  }

//静态同步方法
public static synchronized void syncStatic(){
        this.close = true;
        interrupt();
  }

Object MUTEX = new Object()

public void sync1() {
    sychronized(MUTEX) {
          //同步代码块
    }
}

synchronized 关键字包括monitor enter和monitor exit两个JVM指令,它能够保证在任何时候任何线程执行到monitor enter成功之前都必须从主内存中获取数据,而不是缓存中,保证了数据的一致性,在monitor exit运行成功之后,共享变量被更新后的值必须刷入主内存。

使用sychronized 需要注意的几个问题:

  1. 与Monitor关联的对象不能为空
  2. synchronized 作用域太大
  3. 不同的monitor企图锁相同的方法
  4. 多个锁交叉导致死锁
  5. This Monitor 和Class Monitor 混用

相关文章

网友评论

      本文标题:java 多线程学习 4 synchronized 关键字解析

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