同步方法与同步代码块的区别

synchronized 方法控制类成员的访问:每个类实力对应一把锁,每个synchronized方法都必须获得调用改方法的实例的所才能执行,否则所属线程阻塞,方法一旦执行,就独占该锁,直到从该方法返回时才将锁释放,此后被阻塞的线程方能获得该锁,重新进入可执行状态。这种机制确保同一时刻对于每个实例,其所声明为synchronized的成员函数中至多只有一个可执行的状态(因为至多只有一个能够获得该实例对应的锁),从而避免成员变量的访问冲突。

对synchronized(this)的一些理解

1.两个并发线程访问同一个对象object中得synchronized(this)

2.然后,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized同步代码块

3.尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其他的synchronized(this)同步代码块的访问将被阻塞

4.第三个例子同样适用其他同步代码块,也就是说所,当一个线程方位object的一个synchronized(this)同步代码块时候,它就获得了这个object的对象锁。结果,其他

线程对object对象所有同步代码部分的访问都被暂时阻塞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值