Java synchronized、volatile备忘
博客专区 > cwalet 的博客 > 博客详情
Java synchronized、volatile备忘
cwalet 发表于3年前
Java synchronized、volatile备忘
  • 发表于 3年前
  • 阅读 59
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云实验室 1小时搭建人工智能应用,让技术更容易入门 免费体验 >>>   

摘要: Java synchronized、volatile关键字应用示例及说明

以下代码每段均是一个单独示例:

// synchronized锁定的是调用这个同步方法的对象
public synchronized void method() {}

// synchronized锁定的是这个静态同步方法的类(对象)
public static synchronized void method() {}

// synchronized锁定的是调用这个方法的当前(this)对象
public void method() {
    synchronized (this) {}
}

// synchronized锁定的是这个方法所在的类(Class对象),不推荐这样写
public void method() {
    synchronized (this.getClass()) {}
}

// synchronized锁定的是这个方法所在的类(Class对象),推荐这样写
public class Test {
    public void method() {
        synchronized (Test.class) {}
    }
}

// synchronized锁定的是Object类(Class对象)
public void method() {
    synchronized (Object.class) {}
}

// synchronized锁定的是内部变量(Object类型的实例对象)
public class Test {
    private Object lockObj = new Object();
    
    public void method() {
        synchronized (lockObj) {}
    }
}

// 结合使用 volatile 和 synchronized 实现 “开销较低的读-写锁” 
public class CheesyCounter {
    private volatile int value;

    public int getValue() {
        return value;
    }

    public synchronized int increment() {
        return value++;
    }
}

参考:Java 理论与实践: 正确使用 Volatile 变量

EOF.

共有 人打赏支持
粉丝 42
博文 91
码字总数 85861
×
cwalet
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: