synchronized学习笔记1

synchronized学习笔记1:
**1.**synchronized取得的锁是对象锁,哪个方法取得了带synchronized关键字的方法,哪个线程就取得了改线程的对象锁,前提多个线程同时访问同一个对象。
2.线程A持有对象object的对象锁,B线程可以以异步的方式调用object对象中的非synchronized类型的方法。
3.线程A调用object中的同步方法synchronized void funcA()时候,持有了对象object的对象锁,如果此时线程B调用object中的同步方法synchronized void funcB()时候,必须等待线程A释放对象锁。
**4.**synchronized支持锁重入(linux内核的自旋锁不支持重入,会造成死锁),若不支持重入,会出现:
线程A调用了object的synchronized void funcA(),此时线程A获得了object的对象锁,但是在funcA()内部,继续调用object的synchronized 方法,有与object的锁还没有释放,将会在这里等待,funcA()内部等待外部释放锁,funcA()外部方法卡在内部调用synchronized方法这里,互相等待,造成死锁。
5.当存在父子继承关系时,子类完全可以通过可重入锁调用父类同步方法的
6.当一个线程访问object中的一个synchronized(this)同步代码块时,其他线程中所有其他synchronized(this)同步代码块的访问将会被阻塞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值