设计一个不可重入锁
代码
package com.cx330;
public class UnReentrantLock {
private static boolean isLock=false;
public synchronized void lock() throws InterruptedException {
System.out.println("尝试上锁...");
while (isLock) {
System.out.println("锁已经被使用,尝试等待锁释放...");
wait();
}
isLock=true;
System.out.println("上锁成功...");
}
public synchronized void unLock(){
System.out.println("开始释放锁...");
isLock=false;
notify();
}
}
测试
package com.cx330;
public class TestMyUnreentrantLock {
private static UnReentrantLock unReentrantLock=new UnReentrantLock();
public static void methodA() throws InterruptedException {
unReentrantLock.lock();
System.out.println("开始执行方法A...");
methodB();
}
private static void methodB() throws InterruptedException {
unReentrantLock.lock();
System.out.println("开始执行方法B...");
}
public static void main(String[] args) throws InterruptedException {
methodA();
}
}