Lock ReentrantLock ReentrantReadWriteLock
简介
方法列表
个人理解
关键操作
使用场景
示例代码(java 1.8)
public static void main(String[] args) {
Lock lock = new ReentrantLock();
for (int i = 0; i < 3; i++) {
int j = i;
new Thread(()->{
try {
if(j==1)
Thread.sleep(50);
} catch (Exception e) {
}
lock.lock();
System.out.println(j+"-->getLock");
try {
Thread.sleep(500);
} catch (Exception e) {
}
lock.unlock();
System.out.println(j+"-->unLock");
}).start();
try {
if(i==0)
Thread.sleep(50);
} catch (Exception e) {
}
}
ReentrantReadWriteLock rwlock = new ReentrantReadWriteLock();
for (int i = 0; i < 3; i++) {
int j = i;
new Thread(()->{
Lock k = null;
if(j==2){
k = rwlock.writeLock();
}else{
k = rwlock.readLock();
}
k.lock();
System.out.println(j+"-->getLock");
System.out.println(j+"-->unLock");
k.unlock();
}).start();
}
}
输出结果
参考博文