synchronized 关键字的底层原理

2 阅读1分钟

synchronized 关键字的底层原理

  • Synchronized【对象锁】采用互斥的方式让同一时刻至多只有一个线程能持有【对象锁】
  • 它的底层由 monitor 实现的,monitor 是 jvm 级别的对象(C++ 实现),线程获得锁需要使用对象(锁)关联 monitor
  • 在 monitor 内部有三个属性,分别是 owner、entrylist、waitset
  • 其中 owner 是关联的获得锁的线程,并且只能关联一个线程;entrylist 关联的是处于阻塞状态的线程;waitset 关联的是处于 Waiting 状态的线程