publicclassReentrant{publicvoidmethod1(){synchronized(Reentrant.class){System.out.println("method1 run");method2();}}publicvoidmethod2(){synchronized(Reentrant.class){System.out.println("method2 run in method1");}}publicstaticvoidmain(String[]args){newReentrant().method1();}}
Lock对象可重入
1234567891011121314151617181920212223242526272829
importjava.util.concurrent.locks.Lock;importjava.util.concurrent.locks.ReentrantLock;publicclassReentrant2{privateLocklock=newReentrantLock();publicvoidmethod1(){lock.lock();try{System.out.println("method1 run");method2();}finally{lock.unlock();}}publicvoidmethod2(){lock.lock();try{System.out.println("method2 run in method1");}finally{lock.unlock();}}publicstaticvoidmain(String[]args){newReentrant2().method1();}}