并发编程基础(二-lock体系)

一、lock与sychronized的比较

(1)lock提供了基于api的可操作性,提供能响应中断式获取锁,超时获取锁,及非阻塞式获取锁

(2)sychronized执行完同步块及发生异常时会自动释放锁,lock要unlock释放锁

二、AQS

(1)设计意图(模板方法设计模式)

1.AQS提供给同步组建使用者,为其屏蔽同步状态的管理,线程排队等底层操作

2.lock(同步组件)是面向使用者的,定义了接口,隐藏其使用的细节

(2)如何使用AQS创建自定义同步组建

1.重写protect方法,告诉AQS如何判断当前同步状态是否获取成功或者失败

2.同步组件调用AQS的模板方法,同步其语义,而其提供的模板又会调用被重写的方法

3.实现自定义同步组件时,推荐采用继承AQS的静态内部类

 

并发编程基础(二-lock体系)