- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
【讲义】第 讲:AQS和JUC
⼀、ReentrantLock重⼊锁
. 概述
. 中断响应lockInterruptibly()
. 锁申请等待限时tryLock(longtime,TimeUnitunit)
. 公平锁和⾮公平锁
. AQS源码解析
⼆、Condition重⼊锁的搭配类
三、Semaphore信号量
四、ReadWriteLock读写锁
五、CountDownLatch倒计时器
六、CyclicBarrier循环栅栏
七、LockSupport线程阻塞⼯具类
⼀、ReentrantLock重⼊锁
1.1概述
●重⼊锁可以完全替代synchronized关键字。在JDK5.0的早期版本中,重⼊锁的性能远远好于
synchronized,但从JDK6.0开始,JDK在synchronized上做了⼤量的优化,使得两者的性能差距并
不⼤。重⼊锁对逻辑控制的灵活性要远远好于synchronized。
●重⼊锁常⽤⽅法
voidlock():获得锁,如果锁已经被占⽤,则等待。
voidlockInterruptibly():获得锁,但优先响应中断。
booleantryLock():尝试获得锁,如果成功,返回true;如果失败则返回false;获得不到锁,则不进
⾏等待,⽴即返回。
booleantryLock(longtime,TimeUnitunit):在给定时间内尝试获得锁。
booleanisHeldByCurrentThread():判断担⼼线程是否持有锁。
voidunlock():释放锁。
●下⾯是使⽤重⼊锁的简单示例:
1
●之所以称之为重⼊锁,就是⼀个线程允许反复进⼊。当然,这⾥的反复仅仅局限于⼀个线程;如
果同⼀个线程多次获锁,那么在释放锁的时候,也必须释放相同次数。如果释放锁的次数多,那么
会得到⼀个java.lang.IllegalMonitorStateException异常,反之,如果释放锁的次数少,那么相当
于线程还持有这个锁。如下所示:
2
1.2中断响应lockInterruptibly()
●如果使⽤synchronized,要么获得锁,要么保持等待。⽽如果使⽤了重⼊锁,则提供了另⼀种可
能,那就是线程可以被中断。也就是在等待锁的过程中,程序可以根据需要取消对锁的请求。即:
如果⼀个线程正在等待锁,那么它依然可以收到⼀个通知,被告知⽆须再等待,可以停⽌⼯作了。
可以很好的应对死锁问题。示例如下所示:
3
4
1.3锁申请等待限时tryLock(longtime,TimeUnitunit)
●除了等待外部通知之外,要避免死锁还有另外⼀种⽅式,就是限时等待。以下⾯为例,线程尝试
获得锁,如果没有获得锁,则等待5秒钟。如果5秒钟之后依然没有获得锁,则返回false,表示获得
锁失败。
●tryLock()⽅法也可以不带参数直接运⾏。在这种情况下,当前线程会尝试获得锁,如果锁并未被其
他线程占⽤,则申请锁会成功,并⽴即返回true。如果锁被其他线程占⽤,则当前线程不会进
⾏等待,⽽是⽴即返回false。这种模式不会引起线程等待,因此也不会产⽣死锁。
5
1.4公平锁和⾮公平锁
●在⼤多数情况下,锁的申请都是⾮公平锁。系统只是会从这个锁的等待线程中随机选择⼀个。类似
⼤家买票不去排队,乱哄哄的围在售票窗⼝前,售票员忙得焦头烂额,也顾不及谁先谁后,随便找
⼀个⼈出票就完事⼉了。
您可能关注的文档
- 2024 Java offer 面试收割指南.pdf
- JAVA并发编程基础知识.pdf
- JAVA并发容器和线程池.pdf
- 今日头条java面试题.pdf
- 法院领导干部述学述职述廉述法报告.docx
- 某市审计局党组巡察整改专题民主生活会对照检查材料.docx
- 在全县教育系统警示教育大会上的讲话.docx
- 全市老干部工作会议上讲话稿.docx
- 某市委统战部2024年工作思路及重点举措1.docx
- 某政协副主席现实表现材料.docx
- 某区纪委书记年度民主生活会“四个带头”个人对照检查材料.docx
- 某县纪委监委2024年工作总结及2025年工作计划.docx
- 某市场监督管理局2024年第四季度意识形态领域风险分析研判报告.docx
- 县委书记履行全面从严治党“第一责任人”职责情况汇报.docx
- 税务局党委书记2024年抓党建工作述职报告.docx
- 某市税务局副局长202X年第一季度“一岗双责”履行情况报告.docx
- 副县长在全县元旦春节前后安全生产和消防安全工作部署会议上的讲话.docx
- 某市委书记个人述职报告.docx
- 某县长在县委常委班子年度民主生活会个人对照检查材料1.docx
- 某县长在县委常委班子年度民主生活会个人对照检查材料.docx
文档评论(0)