自学内容网 自学内容网

java中的死锁问题

什么是死锁?

当多个线程持有不同的资源,并且互相等待对方释放资源时,就会导致死锁的发生。在死锁情况下,各个线程都无法继续向前执行,导致程序无法继续运行。

死锁的四个条件?

  1. 互斥条件:线程对资源的访问是排他的,即一次只能有一个线程访问资源。
  2. 请求与保持条件:线程可以保持自己已经持有的资源,并且可以请求新的资源。
  3. 不剥夺条件:资源只能在线程释放之后才能被其他线程获取,不能被其他线程强制剥夺。
  4. 循环等待条件:形成等待环路,即多个线程之间形成一种循环等待资源的关系。

如何避免死锁?

破坏死锁的四个条件即可:

  • 破坏互斥条件:无法被破坏,因为锁就是通过互斥来解决线程安全问题
  • 破坏请求与保持条件:一次申请所有需要的资源
  • 破坏不可剥夺条件:如果线程已占用部分资源,且他还要申请其他资源,如果申请不到,就主动释放它自己占有的资源
  • 破坏循环等待条件:按照顺序申请资源,释放资源则逆序

ps:以下是我整理的java面试资料,密码是obht,感兴趣的可以看看。最后,创作不易,觉得写得不错的可以点点关注!

链接:https://www.yuque.com/u39298356/uu4hxh?# 《Java面试宝典》 


原文地址:https://blog.csdn.net/qq_53281187/article/details/136384541

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!