社区
Java SE
帖子详情
线程死锁问题
侯上校
2012-02-06 02:20:54
死锁四个必要条件:
1。互斥条件
2。请求与保持条件
3。不剥夺条件
4。循环等待条件
如果发生死锁,这四个条件同时成立;但是在四个条件同时满足的情况下,也有可能不是死锁?对吗?
大侠们说明一下,谢谢!!
...全文
312
13
打赏
收藏
线程死锁问题
死锁四个必要条件: 1。互斥条件 2。请求与保持条件 3。不剥夺条件 4。循环等待条件 如果发生死锁,这四个条件同时成立;但是在四个条件同时满足的情况下,也有可能不是死锁?对吗? 大侠们说明一下,谢谢!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Joop_Song
2012-02-07
打赏
举报
回复
[Quote=引用 2 楼 readme1988 的回复:]
既然是必要条件,那就不是充要条件,所以有可能不是死锁;具体原因,我记得在操作系统那本书上讲的挺清楚的,楼主可以去温习下
[/Quote]
看来这位哥们的数学也是很牛X的!!
哥表示关切!!
kellbin54321
2012-02-07
打赏
举报
回复
goood
beiouwolf
2012-02-07
打赏
举报
回复
打个比方
吃的太多会噎死 <- 必要条件
吃的多不一定会噎死,也可能噎个上气不接下气的
所以,吃的多有可能会噎死
所以...
txzsp
2012-02-07
打赏
举报
回复
不一定
nmyangym
2012-02-07
打赏
举报
回复
[Quote=引用 7 楼 tanyit 的回复:]
死锁问题:
多线程:两个线程为例:
第一个线程(Thread1),锁住了一个对象(Object1),另一个线程(Thread2)也同时锁住了另一个对象(Object2)
这时,第一个线程(Thread1),经过一段时间操作需要Object2来继续执行,但是Object2被Thread2锁定,不能为
Thread1所用,这时Thread2,经过一段时间需要使用Object1来继续执行,但是……
[/Quote]
+1
cstur4
2012-02-07
打赏
举报
回复
资源有限
,满足这四个条件仍然不一定是死锁。一种解释是:线程有可能主动放弃对锁的持有。
笑一笑
2012-02-06
打赏
举报
回复
死锁问题:
多线程:两个线程为例:
第一个线程(Thread1),锁住了一个对象(Object1),另一个线程(Thread2)也同时锁住了另一个对象(Object2)
这时,第一个线程(Thread1),经过一段时间操作需要Object2来继续执行,但是Object2被Thread2锁定,不能为
Thread1所用,这时Thread2,经过一段时间需要使用Object1来继续执行,但是Object1被Thread1锁定,不能为
Thread2所用.这样就形成了资源互锁,出现了死锁状态;
双方互相把持对方想要的资源不释放;
synchronized嵌套容易造成死锁的原因,相互持有资源不释放;
侯上校
2012-02-06
打赏
举报
回复
http://ningbo-seo.iteye.com/blog/387706 找了哈,这个地址对充要条件进行了说明,呵呵,也就是如下:
假设A是条件,B是结论
由A可以推出B~由B可以推出A~~则A是B的充要条件(充分且必要条件)
由A可以推出B~由B不可以推出A~~则A是B的充分不必要条件
由A不可以推出B~由B可以推出A~~则A是B的必要不充分条件
由A不可以推出B~由B不可以推出A~~则A是B的不充分不必要条件
简单一点就是:由条件能推出结论,但由结论推不出这个条件,这个条件就是充分条件
如果能由结论推出 条件,但由条件推不出结论。此条件为必要条件
如果既能由结论推出条件,又能有条件 推出结论。此条件为充要条件
yxd_三哥
2012-02-06
打赏
举报
回复
必要条件根充要条件是不同是存在的,不是死锁,原因还与操作系统有关!!
侯上校
2012-02-06
打赏
举报
回复
楼上的,资源无限的情况下不满足四个条件,但是不一定产生死锁,这个能否说个实例?
readme1988
2012-02-06
打赏
举报
回复
当资源无限的情况下,虽然满足4个条件不一定会发生死锁
readme1988
2012-02-06
打赏
举报
回复
既然是必要条件,那就不是充要条件,所以有可能不是死锁;具体原因,我记得在操作系统那本书上讲的挺清楚的,楼主可以去温习下
mp19901204
2012-02-06
打赏
举报
回复
关注下
解决了关闭
死锁
的CSerialPort类项目
一份小项目的源代码,它超越了串口助手,给人一种耳目一新的感觉。亮点如下: 1.它解决了,串口关闭时出现
死锁
不响应
问题
,可以直接用到开发的项目上。 2.并且是扩展了的串口助手,具有通信协议编辑和使用功能, 3.软件升级检测,值得做软件升级例子使用。 4.最重要的是源代码很不错,很值得大家去研究。 分享给做工控上位机的朋友们,有
问题
,可以留言,以便做进一步修正。
计算机操作系统(第三版)
《计算机操作系统》可作为计算机硬件和软件以及计算机通信专业的本科生教材,也可作为从事计算机及通信工作的相关科技人员的参考书。 目录 第一章 操作系统引论 1.1 操作系统的目标和作用 1 1.1.1 操作系统的目标 1 1.1.2 操作系统的作用 2 1.1.3 推动操作系统发展的主要动力 4 1.2 操作系统的发展过程 5 1.2.1 无操作系统的计算机系统 5 1.2.2 单道批处理系统 6 1.2.3 多道批处理系统 7 1.2.4 分时系统 9 1.2.5 实时系统 11 1.2.6 微机操作系统的发展 12 1.3 操作系统的基本特性 14 1.3.1 并发性 14 1.3.2 共享性 15 1.3.3 虚拟技术 16 1.3.4 异步性 17 1.4 操作系统的主要功能 18 1.4.1 处理机管理功能 18 1.4.2 存储器管理功能 19 1.4.3 设备管理功能 21 1.4.4 文件管理功能 21 1.4.5 操作系统与用户之间的接口 22 1.5 OS结构设计 24 1.5.1 传统的操作系统结构 24 1.5.2 客户/服务器模式 26 1.5.3 面向对象的程序设计 27 1.5.4 微内核OS结构 29 习题 33 第二章 进 程 管 理 2.1 进程的基本概念 34 2.1.1 程序的顺序执行及其特征 34 2.1.2 前趋图 35 2.1.3 程序的并发执行及其特征 36 2.1.4 进程的特征与状态 37 2.1.5 进程控制块 41 2.2 进程控制 43 2.2.1 进程的创建 43 2.2.2 进程的终止 45 2.2.3 进程的阻塞与唤醒 46 2.2.4 进程的挂起与激活 47 2.3 进程同步 47 2.3.1 进程同步的基本概念 47 2.3.2 信号量机制 50 2.3.3 信号量的应用 53 2.3.4 管程机制 55 2.4 经典进程的同步
问题
58 2.4.1 生产者—消费者
问题
58 2.4.2 哲学家进餐
问题
61 2.4.3 读者—写者
问题
63 2.5 进程通信 65 2.5.1 进程通信的类型 65 2.5.2 消息传递通信的实现方法 66 2.5.3 消息传递系统实现中的若干
问题
68 2.5.4 消息缓冲队列通信机制 69 2.6
线程
71 2.6.1
线程
的基本概念 72 2.6.2
线程
间的同步和通信 75 2.6.3
线程
的实现方式 77 2.6.4
线程
的实现 78 习题 81 第三章 处理机调度与
死锁
3.1 处理机调度的层次 84 3.1.1 高级调度 84 3.1.2 低级调度 86 3.1.3 中级调度 87 3.2 调度队列模型和调度准则 88 3.2.1 调度队列模型 88 3.2.2 选择调度方式和调度算法的若干准则 90 3.3 调度算法 91 3.3.1 先来先服务和短作业(进程)优先调度算法 91 3.3.2 高优先权优先调度算法 93 3.3.3 基于时间片的轮转调度算法 95 3.4 实时调度 97 3.4.1 实现实时调度的基本条件 97 3.4.2 实时调度算法的分类 99 3.4.3 常用的几种实时调度算法 100 3.5 产生
死锁
的原因和必要条件 103 3.5.1 产生
死锁
的原因 103 3.5.2 产生
死锁
的必要条件 105 3.5.3 处理
死锁
的基本方法 105 3.6 预防
死锁
的方法 106 3.6.1 预防
死锁
106 3.6.2 系统安全状态 107 3.6.3 利用银行家算法避免
死锁
108 3.7
死锁
的检测与解除 111 3.7.1
死锁
的检测 111 3.7.2
死锁
的解除 113 习题 114 第四章 存 储 器 管 理 4.1 存储器的层次结构 116 4.1.1 多级存储器结构 116 4.1.2 主存储器与寄存器 117 4.1.3 高速缓存和磁盘缓存 117 4.2 程序的装入和链接 118 4.2.1 程序的装入 118 4.2.2 程序的链接 120 4.3 连续分配方式 121 4.3.1 单一连续分配 121 4.3.2 固定分区分配 122 4.3.3 动态分区分配 123 4.3.4 伙伴系统 126 4.3.5 哈希算法 126 4.3.6 可重定位分区分配 127 4.3.7 对换 129 4.4 基本分页存储管理方式 130 4.4.1 页面与页表 130 4.4.2 地址变换机构 131 4.4.3 两级和多级页表 133 4.5 基本分段存储管理方
多
线程
死锁
问题
多
线程
死锁
问题
前天俺们谈到了加锁(
线程
同步),但是在使用加锁的同时又会带来一个
问题
,就是
死锁
。 什么叫
死锁
? 所谓
死锁
: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。 发生
死锁
的原因一般是两个对象的锁相互等待造成的。 那么为什么会产生
死锁
呢? 1.因为系统资源不足。 2.进程运行推进的顺序不合适。 3.资
C# UI与后台
线程
死锁
问题
在项目开发中,往往会遇到
线程
死锁
问题
。前几天,我也遇到了一个类似的
问题
,在这里与大家分享。 一、功能描述 原本程序只能自动刷新(其实就是每隔十秒钟查询访问数据库,得到数据),现在希望增加手动刷新共功能,保证用户使用的方便性和实时性。界面如下: 二、设计思路 为了保证自动刷新的时候不会被手动刷新所干扰,我在程序中加了锁。 功能函数如下: 自动刷...
死锁
原因及解决方案
在应用程序开发的过程中,有时候线上会遇到
死锁
问题
,
死锁
一般有操作系统级别的
死锁
和应用程序级别的
死锁
,操作系统级别的
死锁
通常发生的是进程
死锁
,应用程序级别的
死锁
通常是
线程
的
死锁
,本文主要谈谈
线程
死锁
问题
。 一、java
线程
死锁
1、
死锁
的原因 (1) 因竞争资源发生
死锁
现象:系统中供多个
线程
共享的资源的数目不足以满足全部进程的需要时,就会引起对诸资源的竞争而发生
死锁
现象 (2)推进顺序不当发生
死锁
2、
线程
死锁
的条件 ...
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章