
多线程
文章平均质量分 87
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 评论 -
ReentrantReadWriteLock理解与实例
Lock比传统线程模型中的synchronized方式更加面向对象,与生活中的锁类似,锁本身也应该是一个对象。两个线程执行的代码片段要实现同步互斥的效果,它们必须用同一个Lock对象。 读写锁:分为读锁和写锁,多个读锁不互斥,读锁与写锁互斥,这是由jvm自己控制的,你只要上好相应的锁即可。如果你的代码只读数据,可以很多人同时读,但不能同时写,那就上读锁;如果你的代码修改数据,只能有一个人在写原创 2016-04-18 20:21:13 · 926 阅读 · 0 评论