一个同步方法可以调用另外一个同步方法,一个线程已经拥有某个对象的锁,再次申请的时候仍然会得到该对象的锁也就是说synchronized获得的锁是可重入的
public class T { synchronized void m() { System.out.println("m start"); try { TimeUnit.SECONDS.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("m end"); } synchronized void n() { System.out.println("n start"); try { TimeUnit.SECONDS.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); } m(); System.out.println("n end"); } public static void main(String[] args) { new T().n(); } }