
深入浅出Java并发包
philos3
Android工程师,一个终身学习者,七年就是一辈子,走在践行的路上
展开
-
深入浅出Java并发包—锁机制(一)
转自:http://yhjhappy234.blog.163.com/blog/static/316328322013548580299/ 前面我们看到了Lock和synchronized都能正常的保证数据的一致性(上文例子中执行的结果都是20000000),也看到了Lock的优势,那究竟他们是什么原理来保障的呢?今天我们就来探讨下Java中的锁机制! Synchroniz转载 2016-04-17 10:41:45 · 774 阅读 · 0 评论 -
深入浅出Java并发包—读写锁ReentrantReadWriteLock原理分析(二)
下面我们再来看下读锁的实现: protected final int tryAcquireShared(int unused) { Thread current = Thread.currentThread(); int c = getState(); if (exclusiveCount(c) != 0 && getExc转载 2016-04-17 10:48:34 · 574 阅读 · 0 评论 -
深入浅出Java并发包—锁机制(三)
由锁衍生的下一个对象是条件变量,这个对象的存在很大程度上是为了解决Object.wait/notify/notifyAll难以使用的问题。 条件(也称为条件队列 或条件变量)为线程提供了一个含义,以便在某个状态条件现在可能为 true 的另一个线程通知它之前,一直挂起该线程(即让其“等待”)。因为访问此共享状态信息发生在不同的线程中,所以它必须受保护,因此要将某种形式的锁与该条件相关联。等待提供转载 2016-04-17 10:51:52 · 365 阅读 · 0 评论 -
深入浅出Java并发包—锁机制(二)
2、Sync.FairSync.TryAcquire(公平锁) 我们直接来看代码 protected final boolean tryAcquire(int acquires) { final Thread current = Thread.currentThread(); int c = getState();转载 2016-04-17 11:35:57 · 362 阅读 · 0 评论 -
深入浅出Java并发包—读写锁ReentrantReadWriteLock原理分析(一)
Java里面真正意义的锁并不多,其实真正的实现Lock接口的类就三个,ReentrantLock和ReentrantReadWriteLock的两个内部类(ReentrantReadWriteLock实现了ReadWriteLock接口,并没有实现Lock接口,是其内部类ReadLock和WriteLock实现了Lock的接口),其他都是通过我们前面说的一些工具类实现了线程的阻塞。 前面锁转载 2016-04-17 11:39:04 · 531 阅读 · 0 评论