Synchronized用法详解(4种使用方法示例)

Synchronized用法详解(4种使用方法示例)-mikechen

Java多线程编程经常会使用到Synchronized,Synchronized用法有多种,下面就详解4种常用Synchronized用法@mikechen

同步方法

同步方法使用synchronized关键字修饰一个方法,可以使得多个线程在访问该方法时,只有一个线程能够进入方法内部执行。

如下所示:

public synchronized void method(){
        // 代码
}

修饰实例方法,作用于当前实例加锁,其他线程需要等待该线程执行完毕之后才能进入该方法。

 

同步代码块

同步代码块使用synchronized关键字修饰一个代码块,可以使得多个线程在访问该代码块时,只有一个线程能够进入代码块内部执行。

如下所示:

synchronized(this){

  //代码                                  

 }

 

静态同步方法

同步静态方法使用synchronized关键字修饰一个静态方法,可以使得多个线程在访问该静态方法时,只有一个线程能够进入方法内部执行。

public static synchronized void method(){

        // 代码

 }

 

同步类

同步类使用synchronized关键字修饰一个类,如下所示:

public void method() {
    synchronized (MyClass.class) {
        // 执行同步的代码块
    }
}

可以使得多个线程在访问该类时,只有一个线程能够进入该类内部执行,其他线程需要等待该线程执行完毕之后才能进入该类。

Synchronized的用法需要根据不同的场景和要求选择合适的Synchronized用法,从而保证多线程之间的同步和协调。

以上Synchronized的用法详解,如果还想了解Synchronized原理,请查看:Synchronized原理详解(3大实现原理图解)

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法