java面试题/认证答辩 --- 锁

参考:

> https://blog.csdn.net/xy3233/article/details/109148096
> https://blog.csdn.net/xy3233/article/details/109148052
> https://blog.csdn.net/xy3233/article/details/109148234

常见问题:
死锁原因(必要条件缺一不可):
① 互斥② 不可剥夺③ 请求与保持④ 循环等待
死锁解法:只要破坏四个条件之一即可
① 超时放弃② 顺序请求

java中的锁synchronizedLock
synchronized: java关键字,锁在JVM层面, 无法判断锁状态, 出现异常自动释放,是一个非公平锁,可重入锁(计数器实现)。
锁膨胀:随着锁的竞争,锁可以从偏向锁升级到轻量级锁,再升级的重量级锁,但是锁的升级是单向的,也就是说只能从低到高升级,不会出现锁的降级.
synchronized锁有四种状态:
偏向锁:无实际竞争,且将来只有第一个申请锁的线程会使用锁。
轻量级锁:无实际竞争,多个线程交替使用锁;允许短时间的锁竞争。
重量级锁:有实际竞争,且锁竞争时间长。

synchronized,可以加在代码块上,也可以加在方法上
synchronized + static 锁对象时class对象
synchronized 方法/代码块 锁对象时this

Lock:Lock是一个接口,主要实现类有ReentrantLock, ReentrantReadWriteLock(ReadLock,WriteLock)
Lock发生异常不会自动释放,必须要在finally中释放锁

ReentrantReadWriteLock: 有读锁和写锁
读锁和写锁是互斥锁
读锁本身是一个共享锁
写锁是一个独享锁

并发包会专门开一篇

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值