自定义同步组件(锁)
来源:互联网 发布:床上用品 知乎 编辑:程序博客网 时间:2024/05/20 00:50
import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.AbstractQueuedSynchronizer;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;/** * * 作为锁(自定义同步组件)的使用者,在使用锁时并不会和内部的同步器打交道,通常是调用锁提供的方法。 * @author gaoyi * @date 2017-06-20 * */public class Mutex implements Lock{//自定义同步器private static class Sync extends AbstractQueuedSynchronizer {protected boolean isHeldExclusively() {return getState() == 1;}public boolean tryAcquire(int acquires) {if(compareAndSetState(0, 1)) {setExclusiveOwnerThread(Thread.currentThread());return true;}return false;}protected boolean tryRelease(int releases) {if(getState() == 0)throw new IllegalMonitorStateException();setExclusiveOwnerThread(null);setState(0);return true;}Condition getCondition() {return new ConditionObject();}}private final Sync sync = new Sync();@Overridepublic void lock() {sync.acquire(1);}@Overridepublic void lockInterruptibly() throws InterruptedException {sync.acquireInterruptibly(1);}@Overridepublic boolean tryLock() {return sync.tryAcquire(1);}@Overridepublic boolean tryLock(long time, TimeUnit unit) throws InterruptedException {return sync.tryAcquire(1);}@Overridepublic void unlock() {sync.release(1);}@Overridepublic Condition newCondition() {return sync.getCondition();}}
说明:队列同步器,是用来构建锁或者其他同步组件的基础框架,是实现大部分同步需求的基础。
阅读全文
0 0
- 自定义同步组件(锁)
- Java并发编程(自定义同步组件)
- 同步器和自定义同步组件
- java并发编程--自定义同步组件
- 自定义组件(第一)
- 自定义组件(二)
- 自定义组件(一)
- 自定义组件(1)
- 自定义组件(二)
- 自定义组件(三)
- 自定义组件(四)
- JSF自定义组件(1)
- VCL:自定义组件(一)
- 如何自定义组件(JavaBean)
- Android自定义组件(一)
- Android自定义组件(二)
- ExtJS 自定义组件(二)
- Delphi 自定义组件(2)
- 浏览器密码存储原理和渗透中的利用
- 设计模式六大原则(二)-- 单一职责原则 ( SRP )
- 有关nginx Tornado tomcat apache
- 通过Loadrunner读取excel表数据并批量更新到Oracle中
- SrollView嵌套Gridview,ListView高度设置wrap_content显示不全解决
- 自定义同步组件(锁)
- python3 换源
- 2.shel脚本l知识点学习一
- NOIP2017模拟赛(六)总结
- JSP中四种属性范围
- css图片剪裁居中
- wget: command not found的两种解决方案
- 老站长诉说网站关键字排名一定不动如何解决
- 【Word】Word2010中插入多级列表编号的三种方法