介绍ReentrantLock之前,先介绍下背景知识,也就是要用到的知识点。这些知识点包括:比较并交换CAS(Compare And Swap )、ReentrantLock的类结构(其父类,内部类等)。...
分类:
其他好文 时间:
2016-05-18 19:35:49
阅读次数:
221
前言 这篇文章被归到Java基础分类中,其实真的一点都不基础。网上写 ReentrantLock的使用、ReentrantLock和synchronized的区别的文章很多,研究ReentrantLock并且能讲清 楚ReentrantLock的原理的文章很少,本文就来研究一下ReentrantLo ...
分类:
其他好文 时间:
2016-05-18 17:21:19
阅读次数:
190
1、实现生产者/消费者模式:一对一交替打印
public class MyService {
private ReentrantLock lock= new ReentrantLock();
private Condition condition = lock.newCondition();
private boolean hasValue = false;
p...
分类:
编程语言 时间:
2016-05-13 03:33:38
阅读次数:
271
synchronized 与 ReentrantLock 简单实现...
分类:
其他好文 时间:
2016-05-13 01:24:47
阅读次数:
95
类ReentrantLock具有完全互斥排他的效果,即同一时间只有一个线程在执行ReentrantLock.lock()方法后面的任务。这样做虽然保证了实例变量的线程安全性,但效率却是非常低下的。所以在JDK中提供了一种读写锁ReentrantReadWriteLock类,使用它可以加快运行效率,在某些不需要操作实例变量的方法中,完全可以使用读写锁ReentrantReadWriteLock来提升...
分类:
编程语言 时间:
2016-05-13 01:12:59
阅读次数:
202
ReentrantLock 与 synchronized 区别...
分类:
其他好文 时间:
2016-05-13 00:23:42
阅读次数:
111
其实这个是引用自网友http://blog.csdn.net/tuposky/article/details/45340183,有2个版本,差别就是ReentrantLock和synchronized
ReentrantLock版
import java.util.concurrent.locks.ReentrantLock;
import org.apache.commons.lang...
分类:
编程语言 时间:
2016-05-12 22:05:32
阅读次数:
214
在Java的ReentrantLock构造函数中提供了两种锁:创建公平锁和非公平锁(默认)。代码如下:
public ReentrantLock(){
sync = new NonfairSync();
}
public ReentrantLock(boolean fair) {
sync = fair ? new FairSync() : new...
分类:
其他好文 时间:
2016-05-12 21:58:24
阅读次数:
136
ReentrantLock可重入锁,使用比synchronized方便灵活,可作为替代使用:
1.支持公平/不公平锁;
2.支持响应超时,响应中断;
3.支持condition;
ReentrantLock实现了Lock接口,内部使用static类继承AQS实现独占式的api来实现这些功能,使用AQS的state来表示锁可重入次数:
之前学习AQS的时候说过请求和rele...
分类:
其他好文 时间:
2016-05-12 14:47:41
阅读次数:
189
锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解惑。
四、可重入锁:
本文里面讲的是广义上的可重入锁,而不是单指JAVA下的ReentrantLock。
...
分类:
编程语言 时间:
2016-05-12 13:15:23
阅读次数:
156