1、cynchronized扩展:可重如锁ReentrantLock ReentrantLock是通过cas算法实现的 RenntrantLock lock=new ReentrantLock(); lock.lock();//如果资源被占用则会等待 //代码锁定区域 finally{ //必须手动 ...
分类:
其他好文 时间:
2017-09-09 00:04:41
阅读次数:
236
ReentrantLock 类实现了 Lock ,它拥有与 synchronized 相同的并发性和内存语义,但是添加了类似锁投票、定时锁等候和可中断锁等候的一些特性。此外,它还提供了在激烈争用情况下更佳的性能。 ...
分类:
其他好文 时间:
2017-09-08 11:54:53
阅读次数:
135
基于AQS的锁(比如ReentrantLock)原理大体是这样:有一个state变量,初始值为0,假设当前线程为A,每当A获取一次锁,status++. 释放一次,status--.锁会记录当前持有的线程。当A线程拥有锁的时候,status>0. B线程尝试获取锁的时候会对这个status有一个CA ...
分类:
其他好文 时间:
2017-09-08 11:37:29
阅读次数:
134
一、概述: Java纪年1.5年,ReentrantReadWriteLock诞生于JUC,此后,国人一般称它为读写锁。人如其名,他就是一个可重入锁,同时他还是一个读写锁 a)跟ReentrantLock并没有任何的亲属关系 因为ReentrantReadWriteLock在命名上跟Reentran ...
分类:
其他好文 时间:
2017-09-07 16:14:05
阅读次数:
191
原文:http://www.ibm.com/developerworks/cn/java/j-jtp10264/index.html 多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Th ...
分类:
编程语言 时间:
2017-09-04 16:06:56
阅读次数:
250
1 公平锁/非公平锁 公平锁是指多个线程按照申请锁的顺序来获取锁。 非公平锁是指多个线程按照申请锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。有可能,会造成优先级反转或者饥饿现象。 对于Java ReentrantLock而言,通过构造函数指定该锁是否是公平锁,默认是非 ...
分类:
编程语言 时间:
2017-09-04 00:48:05
阅读次数:
272
reentrantlock对象,里面有一个state属性,volatile的,对其进行cas操作,可以作为锁使用。 ReentrantLock lock = new ReentrantLock(); lock.lock();方法调用的是sync.lock()方法,sync是ReentrantLock ...
分类:
其他好文 时间:
2017-08-31 17:13:10
阅读次数:
215
Lock框架是jdk1.5新增的,作用和synchronized的作用一样,所以学习的时候可以和synchronized做对比。在这里先和synchronized做一下简单对比,然后分析下Lock接口以及ReentrantLock的源码和说明。具体的其他的Lock实现的分析在后面会慢慢介绍。Lock... ...
分类:
其他好文 时间:
2017-08-30 14:19:04
阅读次数:
267
import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** * * @author daxin * */ public class Main1 { static Lock l... ...
分类:
编程语言 时间:
2017-08-23 13:44:31
阅读次数:
117
DelayQueue<E>继承于AbstractQueue<E>实现BlockingQueue<E> 内部变量包括ReentrantLock 类型的lock以及条件Condition类型的available 同时内部维护一个优先级队列q。 内部的方法offer(E e): public boolea ...
分类:
其他好文 时间:
2017-08-23 13:37:21
阅读次数:
134