死锁的原因

1、交叉锁可导致程序死锁
无限等待的情况,A拿着R1的锁,等待获取R2的锁,B拿着R2的锁,等待R1的锁。
2、内存不足
类似1.这回是等待释放内存
3、一问一答式的数据交换
在数据交换中,这种一问一答式若是一方某种原因发送的消息丢失,那么这种情况下,发送方等待接收返回信息,接收方无限等待接收信息。
4、数据库锁
for update退出事物,那么其他线程访问时数据库都会陷入死锁
5、文件锁
某个线程获取或者操作文件时出错,意外的退出了,那么其他线程访问会等待。
6、死循环引起的死锁
逻辑出错造成了无限获取的情况,其他线程来会死锁

posted @ 2020-04-09 22:28  newbie94  阅读(161)  评论(0编辑  收藏  举报