首先结论是不管jdk哪个版本,synchronize都是可重入锁,只不过早期版本它是一个重量级锁。

后来的版本对它进行了优化,这就涉及了synchronize的锁升级。从无锁、偏向锁、轻量级锁到重量级锁的一个过程。

可以通过自己动手写一个synchronize的方法,方法体也叫临界区中仍然可以存在synchronize来证明。