本次面试答案,以及收集到的大厂必问面试题分享:
死锁产生的必要条件
- 互斥条件:一个资源只能被一个进程或者线程使用。
- 请求和保持条件:一个进程或者线程,请求资源的时候发生阻塞,对已经获取的资源保持不放。
- 不可剥夺条件:进程或者线程以获得的资源,在未使用完成时,不能强行剥夺。
- 循环等待条件:若干进程或者线程形成一种头尾相接的循环等待的资源关系。
这四分条件是死锁产生的必要条件,只要发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。
如何避免死锁
- 以确定的顺序获得锁
- 加锁时限
Lock接口提供了boolean tryLock(long time, TimeUnit unit) throws InterruptedException方法,该方法可以按照固定时长等待锁,因此线程可以在获取锁超时以后,主动释放之前已经获得的所有的锁。
最后
面试题文档来啦,内容很多,485页!
由于笔记的内容太多,没办法全部展示出来,下面只截取部分内容展示。有想获取完整版笔记的朋友,点赞后点击这里免费领取哦
1111道Java工程师必问面试题
MyBatis 27题 + ZooKeeper 25题 + Dubbo 30题:
Elasticsearch 24 题 +Memcached + Redis 40题:
Spring 26 题+ 微服务 27题+ Linux 45题:
Java面试题合集:
ux 45题:**
[外链图片转存中…(img-WHqPgjyo-1625591042437)]
Java面试题合集:
《MySql面试专题》
《MySql性能优化的21个最佳实践》
《MySQL高级知识笔记》
文中展示的资料包括:**《MySql思维导图》《MySql核心笔记》《MySql调优笔记》《MySql面试专题》《MySql性能优化的21个最佳实践》《MySq高级知识笔记》**如下图
关注我,点赞本文给更多有需要的人
ums/4f45ff00ff254613a03fab5e56a57acb)收录**