当前位置: 首页 > 后端技术 > Java

【Java面试】什么是可重入,什么是可重入锁?它解决了什么问题?

时间:2023-04-01 20:22:18 Java

一位工作3年的粉丝去一家互联网公司面试,却被面试官惊呆了。面试官说:“这么简单的问题你都不会?我聊不下去了,回去等通知吧。”这个问题是:“什么是可重入锁,它的作用是什么?”对于这个问题,我们来看看普通人和专家的回答。普通人:是的。.................师父:好的。可重入是多线程并发编程中一个比较重要的概念。简单的说,就是一个正在运行的函数或者代码。由于资源抢占或中断导致函数或代码中断。等待中断程序执行完毕后,重新进入该函数或代码运行,且运行结果不受影响,则该函数或代码可重入。可重入锁,简单来说就是如果一个线程抢占了mutex资源,然后在锁释放前竞争同一个锁,不需要等待,只需要记录重入次数即可。在多线程并发编程中,大部分锁都是可重入的,如Synchronized、ReentrantLock等,但也有不支持重入的锁,如JDK8中提供的读写锁StampedLock。锁的重入主要是解决避免线程死锁的问题。因为一个已经获取到同步锁X的线程在释放锁X之前还要去竞争锁X,相当于等待自己释放锁,这显然是站不住脚的。以上是我对这个问题的理解。总结这个问题,其实就是考察求职者的基本知识。互联网大公司对基金会的调查会特别深入,如果有必要,还是需要在工作之外花更多的时间做研究。而且,对于3年的工作经验来说,审视这样的问题也不过分。有什么面试问题,职业发展问题,学习问题可以私信我。版权声明:除特别声明外,本博客所有文章均采用CCBY-NC-SA4.0许可协议。转载请注明来自Mic带你学建筑!如果本文对您有帮助,请给个关注和点赞。您的坚持是我不断创作的动力。欢迎关注同名微信公众号获取更多技术干货!