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面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》