Synchronized实现原理
主要作用
1. 确保线程互斥的访问同步代码块
2. 保证共享变量的修改及时可见
3. 有效解决重排序问题
主要作用位置
Synchronized 是对象锁
1. 修饰普通方法
2. 修饰静态方法
3. 修饰代码块
工作原理 :
每个对象有一个监视器锁moitor 当monitor被占用的时候就处于锁定状态
线程执行monitorenter指令时 尝试获取monitor的所有权
过程如下
1. 如果monitor 的进入数为0 则线程进入monitor 然后将参数设置为1,该现场即为monitor 所有者
2. 如果线程已经占有该monitor 只是重新进入,则进入monitor 进入数加1
3. 如果线程已经占用monitor 则该现场进入阻塞状态,直到monitor的进入数为0,再重新尝试获取monitor的所有权