两者的区别是
一个是递归锁,
一个是普通锁。
普通锁会傻不拉几的去请求资源,锁定,然后是阻塞且未或者未设置超时,它请求不到就在那儿等着。非阻塞,就是随缘请求,请求不到就算了。
递归锁,顾名思义,递归,更严格一点应该叫自身递归,自身递归是自己调用自己,
如果是去调用了别人就不叫自身递归了。如果发现调用者线程是自己,自身递归层数增加。
锁定多少次就释放多少次,必须让内部的 递归层次计数器归为0.
或者是去占用获取其他的线程。
这个案例只是简单的测试。
在sleep的2秒,其他的线程也想要占用,但是当前的owner不一样,就进行阻塞获取。所以会等到两次release,
先前占用的线程释放了资源之后其他线程才能获取。