![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java.util.concurrent包学习
文章平均质量分 89
ToBeNo6
这个人真的很懒,不知道写什么了。。。。。。。。。。。。
展开
-
java并发包-ReentrantLock(三):如何解锁
(本文源代码来自openjdk1.8,有错误和不足欢迎讨论指正) 看了前面讲述lock工作原理的文章,我们对ReentrantLock的实现方式有了了解。ReentrantLock中由其内部对象sync中的state成员记录其锁状态,当state=0时,代表无线程占用锁,state=n,n代表同一线程对锁的重入次数。lock的逻辑无疑就是尝试将state值从零改为1(占用)或者增加1(重入),否则原创 2017-03-17 12:20:09 · 588 阅读 · 0 评论 -
java并发包-ReentrantLock(四):Condition
ReentrantLock的最后讲一下Condition的使用,之前在Lock接口中,我们看到他有一个newCondition要求子类实现,从而能够实现在某一个条件上等待。(相较于传统的由虚拟机支持的synchronized关键字和wait/notify的组合,它能够选择性的唤醒正确的线程)。 同样根据方法的调用顺序,先来查看ReentrantLock中newCondition的实现是如何返回一个原创 2017-03-20 23:39:56 · 456 阅读 · 0 评论 -
java并发包-Reentrantlock(二):tryLock与lockInterruptibly
(本文源代码完全来自openjdk1.8,欢迎对文中内容进行讨论指正)1. lock.lockInterruptibly()上一篇文章揭示了lock.lock()方法的工作原理,它在acquireQueued方法中设置了一个死循环,当线程从阻塞解除时,首先判断线程是否该竞争锁,如果是,则去竞争锁。竞争失败或者其它唤醒方式(如线程被中断)都会导致线程重新阻塞,这意味着lock方法屏蔽了中断,无法对其相原创 2017-03-15 19:06:57 · 639 阅读 · 0 评论 -
java并发包-ReentrantLock(一):lock()是如何工作的
*(本文源代码来自openjdk8,有错误和不足欢迎讨论指正)*ReentrantLock是java并发包提供的最常用的显示锁,除了实现内置锁的基本功能,还允许实现一些高级功能。ReentrantLock的声明如下:public class ReentrantLock implements Lock, java.io.Serializable {//内容忽略}可以看到它实现了Lock接口与S原创 2017-03-15 13:03:53 · 554 阅读 · 0 评论