- 博客(7)
- 收藏
- 关注
原创 ReentrantReadWriteLock理解与实例
Lock比传统线程模型中的synchronized方式更加面向对象,与生活中的锁类似,锁本身也应该是一个对象。两个线程执行的代码片段要实现同步互斥的效果,它们必须用同一个Lock对象。 读写锁:分为读锁和写锁,多个读锁不互斥,读锁与写锁互斥,这是由jvm自己控制的,你只要上好相应的锁即可。如果你的代码只读数据,可以很多人同时读,但不能同时写,那就上读锁;如果你的代码修改数据,只能有一个人在写
2016-04-18 20:21:13 887
转载 深入浅出Java并发包—读写锁ReentrantReadWriteLock原理分析(一)
Java里面真正意义的锁并不多,其实真正的实现Lock接口的类就三个,ReentrantLock和ReentrantReadWriteLock的两个内部类(ReentrantReadWriteLock实现了ReadWriteLock接口,并没有实现Lock接口,是其内部类ReadLock和WriteLock实现了Lock的接口),其他都是通过我们前面说的一些工具类实现了线程的阻塞。 前面锁
2016-04-17 11:39:04 502
转载 深入浅出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 350
转载 深入浅出Java并发包—锁机制(三)
由锁衍生的下一个对象是条件变量,这个对象的存在很大程度上是为了解决Object.wait/notify/notifyAll难以使用的问题。条件(也称为条件队列 或条件变量)为线程提供了一个含义,以便在某个状态条件现在可能为 true 的另一个线程通知它之前,一直挂起该线程(即让其“等待”)。因为访问此共享状态信息发生在不同的线程中,所以它必须受保护,因此要将某种形式的锁与该条件相关联。等待提供
2016-04-17 10:51:52 347
转载 深入浅出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 555
转载 深入浅出Java并发包—锁机制(一)
转自:http://yhjhappy234.blog.163.com/blog/static/316328322013548580299/前面我们看到了Lock和synchronized都能正常的保证数据的一致性(上文例子中执行的结果都是20000000),也看到了Lock的优势,那究竟他们是什么原理来保障的呢?今天我们就来探讨下Java中的锁机制!Synchroniz
2016-04-17 10:41:45 744
转载 DirectMemory(堆外(Off-Heap)缓存BigMemory的一个实现)
就Java 本地Cache(非分布式)而言,存在3个地方可以存放数据:Heap, OffHeap和DiskBigMemory非开源产品,所以其源码不能通过正常渠道拿到。同时,有一个开源产品DirectMemory实现了类似BigMemory的Cache实现这是github的地址:https://github.com/raffaeleguidi/DirectMem
2016-04-09 09:48:16 3877
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人