关于java:Java面试什么是可重入什么是可重入锁-它用来解决什么问题

52次阅读

共计 749 个字符,预计需要花费 2 分钟才能阅读完成。

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

面试官说:”这么简略的问题你都不晓得?没法聊了,回去等告诉吧“。

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

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

普通人:

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

高手:

好的。

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

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

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

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

在多线程并发编程外面,绝大部分锁都是可重入的,比方 Synchronized、ReentrantLock 等,然而也有不反对重入的锁,比方 JDK8 外面提供的读写锁 StampedLock。

锁的可重入性,次要解决的问题是防止线程死锁的问题。

因为一个曾经取得同步锁 X 的线程,在开释锁 X 之前再去竞争锁 X 的时候,相当于会呈现本人要期待本人开释锁,这很显然是无奈成立的。

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

总结

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

互联网大厂对根底的考查会特地深,有必要的话还是须要在工作之外去多花一点工夫钻研。

并且,对于 3 年工作教训,考查这类问题也不算过分。

如果有任何面试问题、职业倒退问题、学习问题,都能够私信我。

版权申明:本博客所有文章除特地申明外,均采纳 CC BY-NC-SA 4.0 许可协定。转载请注明来自 Mic 带你学架构
如果本篇文章对您有帮忙,还请帮忙点个关注和赞,您的保持是我一直创作的能源。欢送关注同名微信公众号获取更多技术干货!

正文完
 0