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

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

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

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

普通人:

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

高手:

好的。

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

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

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

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

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

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

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

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

总结

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

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

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

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

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Mic带你学架构

如果本篇文章对您有帮助,还请帮忙点个关注和赞,您的坚持是我不断创作的动力。欢迎关注「跟着Mic学架构」公众号公众号获取更多技术干货!

最新文章

  1. Windows Store App 全球化 资源匹配规则
  2. SAP 应用服务负载均衡的实现
  3. docker部署tomcat
  4. HTML页引用CSS
  5. 登录界面 beta版
  6. IBatis.net动态SQL语句(六)
  7. Python-属性(property)
  8. linux定时执行文件
  9. 各种开源协议介绍 BSD、Apache Licence、GPL V2 、GPL V3 、LGPL、MIT
  10. 洛谷 P1241 括号序列
  11. 关于DLL模块导出函数
  12. [leetcode-623-Add One Row to Tree]
  13. JS 特殊字符的验证的问题
  14. LeetCode之“链表”:Rotate List
  15. 怎样用git上传代码到github以及如何更新代码
  16. Laravel中队列的使用
  17. 【jenkins 忘记密码】忘记Jenkins管理员密码的解决办法
  18. 安装apache 后,找不到服务,解决办法
  19. NOIP常见模板集合
  20. MT【21】任意基底下的距离公式

热门文章

  1. js select 删除某一项下拉列表的值
  2. 微信小程序拖动列表功能
  3. 拼凑一个ABP VNext管理后台
  4. 爬虫---scrapy架构和原理
  5. Java学习day39
  6. Python 一网打尽<排序算法>之先从玩转冒泡排序开始
  7. 『现学现忘』Git基础 — 4、Git下载与安装
  8. 《手把手教你》系列基础篇(八十八)-java+ selenium自动化测试-框架设计基础-Log4j 2实现日志输出-下篇(详解教程)
  9. fpm工具来制作rpm包软件
  10. C#二次开发BIMFACE系列60 File Management文件管理服务及应用场景