【Java】synchronized 用过吗?怎么使用?(约238字)

synchronized 用过吗?怎么使用?

在 Java 中,synchronized 是最常用的锁,它使用简单,并且可以保证线程安全,避免多线程并发访问时出现数据不一致的情况。

随着 JDK 版本的进化,synchronized 的性能也得到了进一步的提升,不再像以前样重量级了。

synchronized 可以用在方法和代码块中。

①、修饰方法

public synchronized void increment() {
    this.count++;
}

当在方法声明中使用了 synchronized 关键字,就表示该方法是同步的,也就是说,线程在执行这个方法的时候,其他线程不能同时执行,需要等待锁释放。

如果是静态方法的话,锁的是这个类的 Class 对象,因为静态方法是属于类级别的。

public static synchronized void increment() {
    count++;
}

②、修饰代码块

public void increment() {
    synchronized (this) {
        this.count++;
    }
}

同步代码块可以减少需要同步的代码量,颗粒度更低,更灵活。synchronized 后面的括号中指定了要锁定的对象,可以是 this,也可以是其他对象。

THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容