A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 薛波 中级黑马   /  2012-3-17 08:15  /  1606 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如何处理多线程中的读锁与写销来防止死销的问题?

3 个回复

倒序浏览
本帖最后由 冯林 于 2012-3-17 12:42 编辑

死锁是指多个线程因竞争资源而造成的一种僵局,若无外力作用这些线程都将永远不可能向前推进。
产生死锁的原因主要是:
(1) 因为系统资源不足。
(2) 进程运行推进的顺序不合适。
(3) 资源分配不当等。
产生死锁的四个必要条件:
(1) 互斥条件:一个资源每次只能被一个线程使用。
(2) 请求与保持条件:一个线程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干线程之间形成一种头尾相接的循环等待资源关系。
{:soso_e100:}
回复 使用道具 举报
你说的有两个方面:
1.当使用了同步机制发生死锁,这个时候发生死锁的原因就是出现同步嵌套

2.就是自己加个锁,这个通过双重判断
回复 使用道具 举报
死锁是 因为多线程访问共享资源, 由于访问的顺序不当所造成的, 通常是一个线程锁定了一个资源A, 而又想去锁定资源B;
在另一个线程中, 锁定了资源B, 而又想去锁定资源A以完成自身的操作;
这样两个线程都想得到对方的资源, 而不愿释放自己的资源, 造成两个线程都在等待, 而无法执行的情况。

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马