栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中锁的类型和死锁

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中锁的类型和死锁

一 主流锁的分类: 1.线程要不要锁住同步资源
	1.锁住->悲观锁,如synchronized,ReentrantLock等
	2.不锁住->乐观锁 如CAS
2.锁住同步资源失败,线程要不要阻塞
1.阻塞
2.不阻塞:自旋锁(自旋次数默认10次)和适应性自选锁(自旋的时间次数不固定)
3.多线程竞争同步资源的流程细节
1.不锁住资源,多个线程中只有一个能修改资源成功,其他线程会重试 ——无锁
2.同一个线程执行同步资源时,自动获取资源——偏向锁
3.多个线程竞争同步资源时,没有获取资源的线程自旋等待锁释放——轻量级锁
4.多个线程竞争同步资源时,没有获取资源的线程阻塞等待——重量级锁
4.多个线程竞争锁时要不要排队
1.排队——公平锁
2.先尝试插队,插队失败在排队——非公平锁(synchronized)
5.一个线程中的多个流程能不能获取同一把锁
1.能——可重入锁
2.不能——非可重入锁
6.多个线程能不能共享一把锁
1.能——共享锁
2.不能——拍他锁
二 死锁产生的四个必要条件

1.互斥使用,即当资源被一个线程占有时,别的线程不能使用
2.不可抢占,资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放。
3.请求和保持,即当资源请求者在请求其他的资源的同时保持对原有资源的占有。
4.循环等待,即存在一个等待队列:T1占有T2的资源,T2占有t3的资源,T3占有T1的资源。这样就形成了一个等待环路。
PS:只要破坏了其中一个条件,死锁就不会发生

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/842656.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号