synchronized锁的理解

对于synchronized,我的理解是相当于为一个对象加上了锁,只有获取到该对象的钥匙即可执行相应的代码。(我理解钥匙相当于对象的句柄,一个对象只有一个句柄,只有拿到句柄打开锁才可以执行,执行完成后句柄位置还原,其他同步代码块抢到这个句柄继续执行,而其他的线程则一直尝试获取句柄,所以说无论是对象内部的同步代码块还是其他线程的同步代码块,若锁住的是同一对象,则为同步执行)
a.多个synchronized可以锁住同一个对象,但是只有一个获取到对象“”钥匙“”的可以得到执行。
b.synchronized 修饰方法,相当于
synchronized(this){
}
c.方法里只有同步代码块里的代码是同步执行的,其他代码仍是异步执行,只不过执行到同步代码块的位置阻塞住了,所以需要注意锁的位置,不适当的话还是会产生脏读

细化的三个结论 :
1.当多个线程同时执行synchronized(x){}同步代码块是呈同步效果
注 : x为同一个对象

2.当其他线程执行x对象中的synchronized同步方法时呈同步效果

3.当其他线程执行x对象中的synchronized(x){}同步代码块时也呈现同步效果,但是如果其他线程调用不加synchronized关键字的方法时,还是异步调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值