SpringBoot+JPA项目中,当遇到线程死锁放弃本次操作继续执行下一操作,而不是让整个程序崩溃掉。
有什么可以实现的方法吗?

SpringBoot+JPA死锁问题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 小达哥的垃圾桶 2019-08-14 09:33关注
一个可行的做法是释放所有锁,回退,并且等待一段随机的时间后重试。这个和简单的加锁超时类似,不一样的是只有死锁已经发生了才回退,而不会是因为加锁的请求超时了。虽然有回退和等待,但是如果有大量的线程竞争同一批锁,它们还是会重复地死锁(编者注:原因同超时类似,不能从根本上减轻竞争)。 一个更好的方案是给这些线程设置优先级,让一个(或几个)线程回退,剩下的线程就像没发生死锁一样继续保持着它们需要的锁。如果赋予这些线程的优先级是固定不变的,同一批线程总是会拥有更高的优先级。为避免这个问题,可以在死锁发生的时候设置随机的优先级。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报