百木园-与人分享,
就是让自己快乐。

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

一个工作了3年的粉丝,去一个互联网公司面试,结果被面试官怼了。

面试官说:”这么简单的问题你都不知道? 没法聊了,回去等通知吧“。

这个问题是: ”什么是可重入锁,以及它的作用是什么?“

对于这个问题,来看看普通人和高手的回答吧

普通人:

嗯。。。。。。。。。。。。。。。。。。

高手:

好的。

可重入是多线程并发编程里面一个比较重要的概念,

简单来说,就是在运行的某个函数或者代码,因为抢占资源或者中断等原因导致函数或者代码的运行中断,

等待中断程序执行结束后,重新进入到这个函数或者代码中运行,并且运行结果不会受到影响,那么这个函数或者代码就是可重入的。

而可重入锁,简单来说就是一个线程如果抢占到了互斥锁资源,在锁释放之前再去竞争同一把锁的时候,不需要等待,只需要记录重入次数。

在多线程并发编程里面,绝大部分锁都是可重入的,比如Synchronized、ReentrantLock等,但是也有不支持重入的锁,比如JDK8里面提供的读写锁StampedLock。

carbon-202204211206002

锁的可重入性,主要解决的问题是避免线程死锁的问题。

因为一个已经获得同步锁X的线程,在释放锁X之前再去竞争锁X的时候,相当于会出现自己要等待自己释放锁,这很显然是无法成立的。

以上就是我对这个问题的理解。

总结

关于这个问题,其实是考察求职者的基础知识。

互联网大厂对基础的考察会特别深,有必要的话还是需要在工作之外去多花一点时间研究。

并且,对于3年工作经验,考察这类问题也不算过分。

如果有任何面试问题、职业发展问题、学习问题,都可以私信我。

file

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Mic带你学架构
如果本篇文章对您有帮助,还请帮忙点个关注和赞,您的坚持是我不断创作的动力。欢迎关注「跟着Mic学架构」公众号公众号获取更多技术干货!


来源:https://www.cnblogs.com/mic112/p/16359024.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » 【Java面试】什么是可重入,什么是可重入锁? 它用来解决什么问题?

相关推荐

  • 暂无文章