Java中 死锁是同步造成的还是异步造成的?

 我来答
jamxval
推荐于2017-12-16 · TA获得超过6821个赞
知道大有可为答主
回答量:4308
采纳率:82%
帮助的人:1390万
展开全部
死锁是这要发生的。

A,B,C 三个线程都拿着一个资源同时请求另一个由其它人占用的资源,多个参与者的情况也是类似的,反正就是像我们平时说的一手交钱,一手交货,但双方都不放手的过程。

因此只有至少2个参与方同时进行时才会死锁,而同步是一个先做,另一个再接着做,那就不会死锁,因为 A 没完成时,B 还没开始运行,所以 B 不可能抢了 A 需要的资源。
更多追问追答
追问
这里有个同步例子但是您看它是死锁吗?
例:
有A,B线程,同步资源C,D ,A线程锁定一个C资源并试图访问D资源,B线程锁定一个D资源并试图访问C资源,两个相互等待就造成了死锁?这个对吗
追答
正确,因为 A, B 两个都在同时运行,而且各自占用一个对方需要的资源导致双方都不符合继续运行的条件而等待。如果换成 A 运行完了之后 B 才运行的话那就不会发生抢资源的情况。或者两个同时运行,但它们申请资源的顺序是一样的,那也不会出问题,因为 A 先抢了 C,B也想去抢 C 就不可能了,所以 C 没抢到手它就阻塞了,所以B这时不可能去抢 D 了。A 在抢到了 C 之后,D 其实是没人跟它抢的。
xmlknows
2012-12-12 · TA获得超过1106个赞
知道小有建树答主
回答量:596
采纳率:100%
帮助的人:386万
展开全部
概念上有混淆,同步的反面是非同步,异步的反面是阻塞。
同步可以让线程一个一个进行资源访问,未同步竞争资源,可能会死锁
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
左潇龙
2012-12-12 · TA获得超过470个赞
知道小有建树答主
回答量:344
采纳率:0%
帮助的人:276万
展开全部
当然是异步了。。。同步情况下都是安全的。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友cc8c667
2012-12-12 · TA获得超过505个赞
知道小有建树答主
回答量:213
采纳率:60%
帮助的人:155万
展开全部
当然是同步了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
polo_wxz
2012-12-12 · TA获得超过516个赞
知道答主
回答量:155
采纳率:0%
帮助的人:121万
展开全部
异步造成的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式