synchronized 是jvm提供的一种多线程环境下的同步互斥机制,是一种可重入的锁,基于悲观锁实现,当修饰代码块儿时,代码在编译时编译器会生成两条字节码指令 moniterenter 和 moniterexit 插入代码块儿的前后,当执行moniterenter时如果对象没有锁定或当前线程已经持有改对象的锁,则对象计数器加1 (+1),执行moniterexit 指令对象计数器 -1 ,当计数器为0 时释放对象锁。
synchronized 是jvm提供的一种多线程环境下的同步互斥机制,是一种可重入的锁,基于悲观锁实现,当修饰代码块儿时,代码在编译时编译器会生成两条字节码指令 moniterenter 和 moniterexit 插入代码块儿的前后,当执行moniterenter时如果对象没有锁定或当前线程已经持有改对象的锁,则对象计数器加1 (+1),执行moniterexit 指令对象计数器 -1 ,当计数器为0 时释放对象锁。