本文主要是介绍可重入锁的实现关键,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转载: https://blog.csdn.net/u012545728/article/details/80843595
可重入锁的实现关键 就是 允许同一个线程, 能够重复执行 带有lock锁的方法 或者 带有 synchronized 关键字的方法。
那就 必须在 带有lock锁的方法 或者 带有 synchronized 关键字的方法 上 加上当前执行线程 是否与 前面加锁的线程 是同一个的线程: 如果是的话,那么可以重入; 不是的话,就是其他线程,需要等待,避免并发问题。
boolean isLocked = false;Thread lockedBy = null;int lockedCount = 0;public synchronized void lock()throws InterruptedException{Thread thread = Thread.currentThread();while(isLocked && lockedBy != thread){wait();}isLocked = true;lockedCount++;lockedBy = thread;}public synchronized void unlock(){if(Thread.currentThread() == this.lockedBy){lockedCount--;if(lockedCount == 0){isLocked = false;notify();}}}
再转一篇:
https://www.cnblogs.com/dj3839/p/6580765.html
这篇关于可重入锁的实现关键的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!