立即学习:https://edu.csdn.net/course/play/9827/208800?utm_source=blogtoedu
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
public class MyLock implements Lock{
private boolean flag=false;
private Thread t=null;
private int count=0;
@Override
public synchronized void lock() {
// TODO Auto-generated method stub
if(flag&&t!=Thread.currentThread()){
try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
count++;
t=Thread.currentThread();
flag=true;
}
@Override
public synchronized void unlock() {
// TODO Auto-generated method stub
if(t==Thread.currentThread()){
if(count==0){
notify();
flag=false;
}
}
}
@Override
public void lockInterruptibly() throws InterruptedException {
// TODO Auto-generated method stub
}
@Override
public boolean tryLock() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean tryLock(long time, TimeUnit unit)
throws InterruptedException {
// TODO Auto-generated method stub
return false;
}
@Override
public Condition newCondition() {
// TODO Auto-generated method stub
return null;
}
}
自定义一个可重入锁