这个是以sychronized修饰对象进行分析,假设使用了A对象进行加锁,那么A对象就是锁,A对象包含有对象头、数据和填充组成,其中对象头包含Mark Word和类型指针,Mark Word会指向一个监视器对象(指向监视器的引用),,监视器对象包含有线程持有者和计数器等信息。(Mark Word包括有对象的hashcode、锁信息、GC信息等)
当线计数器为0时(或者通过A对象的Mark Word中的锁信息[无锁状态]),线程A获取到锁,计数器会进行+1,同理,离开时会进行减1,下一个线程获取锁时检测是不是有线程持有锁了或者持有锁的线程是当前线程(检测锁状态信息以及监视器的线程持有者),若没有别的线程获取或者本来就持有,那就获取到锁,往下执行。否则进入阻塞队列。