synchronized是一种内置锁/监视器锁
Java中每个对象都有一个内置锁(监视器,也可以理解成锁标记),而synchronized就是使用对象的内置锁(监视器)来将代码块(方法)锁定的!
synchronized底层是是通过monitor对象,对象有自己的对象头,存储了很多信息,其中一个信息标示是被哪个线程持有。
JDK1.6开始Synchronized锁就做了各种的优化
优化有:偏向锁,轻量级锁,重量级锁
反编译
其他关于synchronized的文章:Synchronized锁在Spring事务管理下,为啥还线程不安全?