1、什么是共享锁和排它锁
共享锁就是允许多个线程同时获取一个锁,一个锁可以同时被多个线程拥有。
排它锁,也称作独占锁,一个锁在某一时刻只能被一个线程占有,其它线程必须等待锁被释放之后才可能获取到锁。
2、排它锁和共享锁实例
ReentrantLock就是一种排它锁。CountDownLatch是一种共享锁。这两类都是单纯的一类,即,要么...
分类:
其他好文 时间:
2014-11-16 14:41:40
阅读次数:
220
上一篇聊聊高并发(二十八)解析java.util.concurrent各个组件(十) 理解ReentrantReadWriteLock可重入读-写锁 讲了可重入读写锁的基本情况和主要的方法,显示了如何实现的锁降级。但是下面几个问题没说清楚,这篇补充一下
1. 释放锁时的优先级问题,是让写锁先获得还是先让读锁先获得
2. 是否允许读线程插队
3. 是否允许写线程插队,因为读写锁一般用在大量...
分类:
编程语言 时间:
2014-11-12 11:54:21
阅读次数:
262
Lock比传统线程模型中的synchronized方式更加面向对象,与生活中的锁类似,锁本身也应该是一个对象。两个线程执行的代码片段要实现同步互斥的效果,它们必须用同一个Lock对象。 读写锁:分为读锁和写锁,多个读锁不互斥,读锁与写锁互斥,这是由jvm自己控制的,你只要上好相应的锁即可。如果你的....
分类:
其他好文 时间:
2014-11-11 10:31:25
阅读次数:
242
简单地缓存系统:当有线程来取数据时,如果该数据存在我的内存中,我就返回数据;如果不存在我的缓存系统中,那么就去查数据库,返回数据的同时保存在我的缓存中。
其中涉及到读写问题:当多个线程执行读操作时(都加读锁),如果有数据返回;如果没有数据时,则让第一个读的线程,进行获取数据,然后进行写操作,这时需要第一个线程先释放掉读锁然后加写锁。第一个写完后,在家读锁,其他线程使用时判断,如果存在该数据,在直...
分类:
编程语言 时间:
2014-11-09 11:21:02
阅读次数:
266
package?cn.guagua.mobile.common;
import?java.util.concurrent.locks.Lock;
import?java.util.concurrent.locks.ReadWriteLock;
import?java.util.concurrent.locks.ReentrantReadWriteLock;
import?org...
分类:
编程语言 时间:
2014-11-04 13:20:31
阅读次数:
261
synchronized与lock 都是用来实现线程同步的锁,synchronized对象锁,lock是一个接口,她的实现有reentrantlock互斥锁以及ReentrantReadWriteLock共享锁。这里说明一下ReentrantReadWriteLock共享锁,所谓共享就是该锁提供读读...
分类:
其他好文 时间:
2014-10-10 19:16:04
阅读次数:
211
本文是学习网络上的文章时的总结,感谢大家无私的分享。
读写锁重要的是写锁的使用,只用一个入口。
下面是读写锁使用的例子
package chapter2;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
public cla...
分类:
编程语言 时间:
2014-09-17 15:16:52
阅读次数:
242
JDK提供了写锁接口ReadWriteLock和它的实现ReentrantReadWriteLock。要实现一个读写锁,需要考虑很多细节,其中之一就是锁升级和锁降级的问题。什么是升级和降级呢?ReadWriteLock的javadoc有一段话:
Can the write lock be downgraded to a read lock without allowing an interven...
分类:
其他好文 时间:
2014-07-31 17:13:36
阅读次数:
231