1.代码

synchronized(myObject) { -》类或者对象
//逻辑代码
}

2.底层原理

monitorenter

// 逻辑代码对应的指令

monitorexit

每个对象都有一个关联的monitor,比如一个对象实例就有一个monitor,一个类的Class对象也有一个monitor,如果要对这个对象加锁,那么必须获取这个对象关联的monitor的lock锁

他里面的原理和思路大概是这样的,monitor里面有一个计数器,从0开始的。如果一个线程要获取monitor的锁,就看看他的计数器是不是0,如果是0的话,那么说明没人获取锁,他就可以获取锁了,然后对计数器加1

Synchornize的底层原理

相关文章:

  • 2021-05-14
  • 2021-12-06
  • 2022-01-15
  • 2021-06-24
  • 2022-01-11
  • 2021-04-18
  • 2021-08-19
猜你喜欢
  • 2021-05-22
  • 2021-12-02
  • 2021-06-01
相关资源
相似解决方案