重入锁和锁对象有什么关系吗

一个线程可以进入所有sync修饰的方法(static,代码块 ),不同锁持有的对象不同。
重入锁和锁持有的对象有什么关系吗

没有关系啊,参考这里https://juejin.im/post/5adf14dcf265da0b7b358d58

锁和对象之间应该是存在一种引用、计数关系的,可重入锁是只当前锁的持有者是当前线程时,它仍然需要获取该锁对象,这种情况是允许操作的,锁引用计数器就会加一;释放后,锁持有引用数减一,直到为0 释放锁。

‘每个对象都有一个监视器,来监测并发代码的重入’;主要说每个对象里都有一个monitor,monitor信息保存在对象的markword里,monitor主要结构是 _owner(持有锁的线程),_entryList(阻塞中的线程),_waitList(持有锁的线程调用wait方法);
主要流程如下
1.线程访问sync方法,首先获取对象的monitor
2.如果当前monitor中的_owner为空,把当前Thread放进去
3.否则判断_owner里面的Thread是否为当前Thread,是则重入,否则加入到_entryList
4.在访问其他被sync修饰的static或代码块,因为对象不同,所以不属于锁重入(Class是否有monitor不清楚)