Java SDK并发包通过Lock和Condition两个接口来实现管程,其中Lock用于解决互斥问题,Condition用于解决同步问题。
Lock
相较于内置加锁机制synchronized,显示锁Lock除了支持类似synchronized隐式加锁的方法外,还支持超时、非阻塞、可中断的方式获取锁,这三种方式为我们编写更加安全、健壮的并发程序提供了很大的便利。
UML

Condition
UML

使用示例
RPC请求(Dubbo源码)
1 | // 创建锁与条件变量 |
人的知识就好比一个圆圈,圆圈里面是已知的,圆圈外面是未知的。你知道得越多,圆圈也就越大,你不知道的也就越多。
Java SDK并发包通过Lock和Condition两个接口来实现管程,其中Lock用于解决互斥问题,Condition用于解决同步问题。
相较于内置加锁机制synchronized,显示锁Lock除了支持类似synchronized隐式加锁的方法外,还支持超时、非阻塞、可中断的方式获取锁,这三种方式为我们编写更加安全、健壮的并发程序提供了很大的便利。


1 | // 创建锁与条件变量 |
微信支付
支付宝