不可重入锁设计原理:假设当前线程已获取锁,尝试再次获取时失败。例如,设计一个不可重入锁,当前线程调用print()方法获取锁,接着调用doAdd()方法会因未释放锁而失败,无法执行内部逻辑,说明不可重入锁限制了线程再次获取同一锁。可重入锁设计原理:线程可以进入并再次获取已持有的锁。例如,设计两个线...
可重入锁 reentrantlock是独占锁且可重入的 synchronized 也可以重入 可重入意思就是这个线程已经获取锁了,你再获取该锁还能获取 获取的还是原来的锁 不会出现问题 可以降低编程难度 代码如下: new Thread(new Runnable() { @Override public void run() { synchronized (this) { System.out.println("第1次获取锁...
你可能会说不是,因为 ReentrantLock 既然是重入锁,根据推理,相反,那 synchronized 肯定就不是重入锁,那你就错了。 答案是:yes,为什么?看下面的例子: public synchronized void operation(){ add(); } public synchronized void add(){ } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. operation 方法调用了 add...