手写不可重入锁 public class LockTest { Lock lock = new Lock(); public void a() { lock.lock(); b(); lock.unlock(); } public void b () { lock.lock(); System.out.println("....."); lock.unlock(); } public static void main(String[] args) { LockTest test = new LockTest(); test.a(); } } class Lock{ //判断是否被占用 private boolean isLocked = false; //使用锁 public synchronized void lock() { //true就等待 while(isLocked) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } isLocked = true; } //释放锁 public synchronized void unlock() { isLocked = false; notify(); } }