Lock接口及其实现

Locks包层次结构:
Lock接口及其实现_第1张图片
Lock接口:
Lock接口及其实现_第2张图片
总结:
1.lock()最常用
2.lockInterruptibly()方法一般更加昂贵,有的impl可能没有实现lockInterruptibly(),只有真的需要效应中断时才使用,使用之前看看impl对该方法的描述。

Condition:
Lock接口及其实现_第3张图片
ReentrantLock:
重入
Lock接口及其实现_第4张图片
count!=0 说明锁被占用
判断owner是否时当前线程,如果不是就进入waiters,挂起当前线程;如果是,就重入。

synchronized vs Lock:
Lock接口及其实现_第5张图片
读写锁:
ReadWriteLock:维护一对关联锁,一个只用于读操作,一个只用于写操作;读锁可以由多个线程同时持有,写是排他的。用一个时间,两把锁不能被不同线程持有。

你可能感兴趣的:(JAVA基础,锁)