synchronized底层原理

发布时间 2023-05-28 21:23:27作者: 程序员_YHB

synchronized对象锁采用互斥的方式使得在同一时刻只有一个线程能够持有锁并操作共享资源,如果其它线程想要获取锁就会进入阻塞状态,从而保证了线程安全问题。

synchronized底层原理:synchronized的实现基于JVM的锁监视器(monitor),每个JVM都有维护自己的一套锁监视器,当集群部署时synchronized会失效,此时可以使用分布式锁。在使用synchronized时需要指定一个对象,所以它也被称为对象锁,monitor主要就是和这个对象产生关联,如图:

 

 在monitor内部有三个属性:

owner:关联获取锁的线程,只能关联一个。

EntryList:关联没有获取锁的线程,处于阻塞状态的线程。

waitSet:关联调用wait()方法的线程,处于waiting状态的线程。