社区
Java SE
帖子详情
JAVA中如何去避免多线程产生的死锁?
侯上校
2011-11-09 02:18:11
JAVA中如何去避免多线程产生的死锁?
...全文
1287
11
打赏
收藏
JAVA中如何去避免多线程产生的死锁?
JAVA中如何去避免多线程产生的死锁?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nmyangym
2011-11-09
打赏
举报
回复
[Quote=引用 5 楼 edric_net_hou2008 的回复:]
多线程的同步实现方法只有加synchronized关键字,还有其它的方法没有?
[/Quote]
还有呢. Lock 类的lock.
kouyiSC
2011-11-09
打赏
举报
回复
[Quote=引用 5 楼 edric_net_hou2008 的回复:]
多线程的同步实现方法只有加synchronized关键字,还有其它的方法没有?
[/Quote]
没有了吧。。。
只知道
同步方式有:同步方法和同步块
妖殿
2011-11-09
打赏
举报
回复
其实,这个问题是比较复杂的。死锁有四个必备条件,为了破坏死锁,每个条件都有破坏的方法。
楼上说的按顺序获取资源,是破坏循环等待的条件,算是比较好的方法但是也是有缺点的。第一,是限制的进程对资源的要求,而已给系统中所有的资源合理编号也是件难事,同时增加了系统开销。第二,为了遵循按编号申请的次序,暂不使用的资源也需要提前申请,从而增加了进程对资源的占用时间。
对于这个问题,单一的临界资源可以使用资源分配图算法,多类的临界资源可以使用“银行家算法”。如果想了解一下的话,楼主可以上网查一下。
大_爱
2011-11-09
打赏
举报
回复
买本书看看咯
这个东西不是一下就能明白的!
wuhoujiansky
2011-11-09
打赏
举报
回复
其实我们在操作资源的时候,可以使用到队列。让线程按照顺序操作资源,这样的话,就不会造成死锁现象。
孟祥月
2011-11-09
打赏
举报
回复
1楼说的挺好 操作系统中讲到这个
在Java中使用楼上说的关键字就可了
侯上校
2011-11-09
打赏
举报
回复
多线程的同步实现方法只有加synchronized关键字,还有其它的方法没有?
shaosijun2004
2011-11-09
打赏
举报
回复
比较简单的方法:所有线程都按顺序获取资源,比如资源ABCD ,那所有线程必须获取了A资源再去 申请B资源 , 类推
licip
2011-11-09
打赏
举报
回复
1楼说的很好。
anhy
2011-11-09
打赏
举报
回复
[Quote=引用 1 楼 luochengor 的回复:]
一般造成死锁必须同时满足如下4个条件:
1,互斥条件:线程使用的资源必须至少有一个是不能共享的;
2,请求与保持条件:至少有一个线程必须持有一个资源并且正在等待获取一个当前被其它线程持有的资源;
3,非剥夺条件:分配资源不能从相应的线程中被强制剥夺;
4,循环等待条件:第一个线程等待其它线程,后者又在等待第一个线程。
因为要产生死锁,这4个条件必须同时满足,所以要防止死锁……
[/Quote]
+1
luochengor
2011-11-09
打赏
举报
回复
一般造成死锁必须同时满足如下4个条件:
1,互斥条件:线程使用的资源必须至少有一个是不能共享的;
2,请求与保持条件:至少有一个线程必须持有一个资源并且正在等待获取一个当前被其它线程持有的资源;
3,非剥夺条件:分配资源不能从相应的线程中被强制剥夺;
4,循环等待条件:第一个线程等待其它线程,后者又在等待第一个线程。
因为要产生死锁,这4个条件必须同时满足,所以要防止死锁的话,只需要破坏其中一个条件即可。
JAVA
多线程
精讲下
本课程是《零基础学
Java
》系列课程
中
的"
多线程
"相关课程.授课形式延续了之前课程的授课风格。内容细腻、详尽,由浅入深!通过本门课程的学习你可以深刻理解
Java
多线程
的原理及实现运行机制,深刻学习
多线程
的生命...
如何
避免
Java
线程
中
的
死锁
?
如何
避免
Java
死锁
? 是
Java
面试
中
最受欢迎的问题之一,也是本季
多线程
的风格,主要是在高层提出,并带有很多后续问题。 尽管问题看起来很基础,但是一旦您开始深入研究,大多数
Java
开发人员就会陷入困境。 面试...
Java
面试问题,如何
避免
Java
线程
中
的
死锁
?
如何
避免
Java
中
的
死锁
?是流行的
Java
面试问题之一,也是
多线程
的流行话题之一。尽管问题看起来很简单,但是一旦深入,大多数
Java
开发人员就会陷入困境。 面试问题以“什么是
死锁
?”当两个或多个线程正在等待彼此释放...
什么是线程
死锁
?如何
避免
死锁
?
线程
死锁
描述的是这样一种情况:多个线程同时被阻塞,它们
中
的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。 如下图所示,线程 A 持有资源 2,线程 B 持有资源 1,他们...
Java
:什么是
死锁
?怎么
避免
死锁
?
Java
中
死锁
的概念和如何
避免
死锁
的方法
Java SE
62,615
社区成员
307,307
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章