1
【
讲
义
】
第
讲
:
A
QS
和
J
U
C
⼀
、
R
ee
ntr
a
nt
L
o
ck
重
⼊
锁
.>
概
述
.>
中
断
响
应
l
o
ck
I
nt
e
rrupt
ibl
y
()
.>
锁
申
请
等
待
限
时
try
L
o
ck
(
l
on
g
t
i
m
e
,
T
i
m
e
U
n
i
t
un
i
t
)
.>
公
平
锁
和
⾮
公
平
锁
.>
A
QS
源
码
解
析
⼆
、
C
on
di
t
i
on
重
⼊
锁
的
搭
配
类
三
、
S
e
m
a
p
h
or
e
信
号
量
四
、
R
ead
W
r
i
t
e
L
o
ck
读
写
锁
五
、
C
ount
D
own
L
a
t
ch
倒
计
时
器
六
、
C
y
clic
B
a
rr
ie
r
循
环
栅栏
七
、
L
o
ck
S
upport
线
程
阻
塞
⼯
具
类
重
⼊
锁
可
以
完
全
替
代
synchronized
关
键
字
。
在
JDK
5
.
0
的
早
期
版
本
中
,
重
⼊
锁
的
性
能
远远
好
于
synchronized
,
但从
JDK
6
.
0
开
始
,
JDK
在
synchronized
上
做
了
⼤
量
的
优
化
,
使
得
两
者
的
性
能
差
距
并
不
⼤
。
重
⼊
锁
对
逻辑
控
制
的
灵
活
性
要
远远
好
于
synchronized
。
重
⼊
锁
常
⽤
⽅
法
下
⾯
是
使
⽤
重
⼊
锁
的
简
单
示
例
:
⼀
、
ReentrantLock
重
⼊
锁
1
.
1
>
概
述
●
●
void
lock()
:
获
得
锁
,
如
果
锁
已
经
被
占
⽤
,
则
等
待
。
void
lockInterruptibly()
:
获
得
锁
,
但优
先
响
应
中
断
。
boolean
tryLock()
:
尝
试
获
得
锁
,
如
果
成
功
,
返
回
true
;
如
果
失
败
则
返
回
false
;
获
得
不
到
锁
,
则
不
进
⾏
等
待
,
⽴
即
返
回
。
boolean
tryLock(long
time,
TimeUnit
unit)
:
在
给
定
时
间
内
尝
试
获
得
锁
。
boolean
isHeldByCurrentThread()
:
判
断
担
⼼
线
程
是
否
持
有
锁
。
void
unlock()
:
释
放
锁
。
●