synchronized是一种阻塞锁。其内部使用monitor实现。在调用synchronized修饰的方式时,会先判断对象的ACC_SYNCHRONIZED标志,如果该标志有设置,再去获取监视器锁,监视器会调用monitorenter方法,把对象的锁计数器+1,释放锁时,调用monitorexit,将对象的锁计数器减1,这样下一个调用的人在调用时,通过判断锁计数器的值是否等于0来实现是否允许执行该段代码。
如果非0,会等待,所以synchronized是一种阻塞锁。
synchronized是一种阻塞锁。其内部使用monitor实现。在调用synchronized修饰的方式时,会先判断对象的ACC_SYNCHRONIZED标志,如果该标志有设置,再去获取监视器锁,监视器会调用monitorenter方法,把对象的锁计数器+1,释放锁时,调用monitorexit,将对象的锁计数器减1,这样下一个调用的人在调用时,通过判断锁计数器的值是否等于0来实现是否允许执行该段代码。
如果非0,会等待,所以synchronized是一种阻塞锁。