Java 多线程 (PART X)synchronized (III)synchronized的几种格式

23 篇文章 0 订阅
23 篇文章 1 订阅

synchroized的几种格式:

对象锁

synchronized同步方法(非静态方法)
格式:
synchronized public void Method(){
    /**
    Method body
    */
}
作用:

对类的对象进行加锁,保证同一时间只有一个线程可以访问当前方法。
和其他锁的效果:

synchronized(this)同步代码块
格式:
public void Method(){
    synchronized (this){
    /**
    block body
    */
    }
}
作用:

对类的对象进行加锁,当两个并发线程访问同一个对象object中的synchronized(this)同步代码块时,保证同一时间只有一个线程可以访问此代码块。

synchronized(非 this 对象)同步代码块
格式:
public Object myobject=new Object();
public void Method(){

    synchronized (myobject){
    /**
    block body
    */
    }
}
作用:

不会锁定当前对象,在多个线程持有“对象监视器”为同一个对象(X)的前提下,同一个时间只有一个线程可以执行synchronized(非this对象X)同步代码块中的代码。(非this对象X不能为局部变量)

类锁

synchronized(Object.Class)同步代码块
格式:
class MyObject{
    /other things/
    public static void Method(){
        synchronized(MyObject.class){
        }
}
}
作用:

和synchronized同步方法(static静态方法),对类进行加锁,在不同线程访问同一个类的synchronized同步方法(static静态方法)呈现同步效果。

synchronized同步方法(static静态方法)
格式:
synchronized public static void Method(){
    /**
    Method body
    */
}
作用:

和synchronized(Object.Class)同步代码块作用相同,对类进行加锁,在不同线程访问同一个类的synchronized(Object.Class)同步代码块呈现同步效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值