码上敲享录 > java入门知识分享 > java线程死锁的理解

java线程死锁的理解

上一章章节目录下一章 2020-12-09已有883人阅读 评论(0)

java线程死锁的理解


解决方法:

死锁的产生必须具备以下四个条件。

● 互斥条件:指线程对已经获取到的资源进行排它性使用,即该资源同时只由一个线程占用。如果此时还有其他线程请求获取该资源,则请求者只能等待,直至占有资源的线程释放该资源。

● 请求并持有条件:指一个线程已经持有了至少一个资源,但又提出了新的资源请求,而新资源已被其他线程占有,所以当前线程会被阻塞,但阻塞的同时并不释放自己已经获取的资源。

● 不可剥夺条件:指线程获取到的资源在自己使用完之前不能被其他线程抢占,只有在自己使用完毕后才由自己释放该资源。

● 环路等待条件:指在发生死锁时,必然存在一个线程—资源的环形链,即线程集合{T0, T1, T2, …, Tn}中的T0正在等待一个T1占用的资源,T1正在等待T2占用的资源,……Tn正在等待已被T0占用的资源。


避免线程死锁就要控制两个线程申请资源的顺序,可以让线程a先获取锁1后获再取锁2,线程b等待线程a都释放两个锁之后再获取锁1和锁2,就是把锁1和锁2关联成一个整体,两个锁同时只能由一个线程占有。


向大家推荐《Activiti工作流实战教程》:https://xiaozhuanlan.com/activiti
0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交