![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java锁
文章平均质量分 53
保证并发安全
二次觉醒
路靠自己去走,才能越走越宽。
展开
-
java锁
(5)尽量避免嵌套锁的使用,如果必须使用嵌套锁,可以采用锁的升级和降级策略,即先获取较低级别的锁,再获取较高级别的锁,避免死锁的发生。(1)避免一个线程同时获取多个锁,并且其他线程也需要这些锁的情况,可以通过对锁的获取顺序进行统一,降低死锁的概率。(2)尽量减小锁的作用域,即只在必要的部分进行加锁,这样可以减少锁的竞争,降低死锁的概率。用于针对特定变量的原子操作,提供线程安全的增加、减少、更新等操作,无需显式的锁机制。(3)使用定时锁,即在获取锁的时候设置超时时间,如果超时则放弃获取,避免长时间等待。原创 2023-10-19 11:58:16 · 182 阅读 · 0 评论 -
synchronized锁的升级过程
答:不一定,比如在一开始已经知道某个资源就需要被多个线程争抢,此时就不需要开启偏向锁,因为偏向锁给了标识之后,还需要取消这个标识,重新抢锁,比如在JVM中,偏向锁默认是延迟4秒才开始的,因为JVM在启动的时候需要多个线程竞争资源,并且这个都是一开始知道的。答:只有一个线程的时候就是偏向锁(当偏向锁开启的时候,偏向锁默认开启);:多个线程争抢锁,向内核申请锁资源,将未争抢成功的锁放到队列中直接阻塞。答:无锁 --> 偏向锁 --> 轻量级锁 --> 重量级锁。2:什么情况下偏向锁才会升级为轻量级锁。原创 2023-04-20 00:19:12 · 382 阅读 · 0 评论