当前位置:德化新闻中心 > 媒体聚焦 >

运城达内java培训死锁的概念与产生原理
时间:2020-04-12  来源:  作者:admin666

并发编程是程序员在学习java编程开发技术的时候需要重点掌握的一个编程知识,而今天我们就一起来了解一下,并发编程中的死锁以及产生条件都有哪些。

运城达内java培训死锁的概念与产生原理

1、死锁

我们一般使用加锁来保证线程安全,但是过度地使用加锁,可能导致死锁发生。

2、什么是死锁

每个人都拥有其他人需要的资源,同时又等待其他人已经拥有的资源,并且每个人在获得所需资源之前都不会放弃已经拥有的资源。这就是一种死锁。

再使用线程的术语描述一下。在线程A持有锁L并想获得锁M的同时,线程B持有锁M并尝试获取锁L,那么这两个线程将永远地等待下去。

3、产生死锁的四个条件

互斥,共享资源X和Y只能被一个线程占用

占用且等待,线程T1已经获得了共享资源X,在等待共享资源Y的时候,不释放共享资源X;

不可抢占,其他线程不能强行抢占线程T1占用的资源;

循环等待,线程T1等待线程T2占有的资源,线程T2等待线程T1占有的资源,就是循环等待。

反过来说,我们只要破坏掉四个条件中的一个,就可以避免死锁的发生。

对于“占用且等待”的条件,我们可以一次性申请所有资源;

对于“不可抢占”这个条件,占用部分资源的线程在申请其他资源时,如果申请不到,可以主动释放它占有的资源。

对于“循环等待”这个条件,可以按照固定的顺序申请资源,所有线程都按照规定的顺序获得锁,这样就不存在循环等待了。

【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。




上一篇:UI设计师需要掌握的B端产品设计流程
下一篇:没有了

图片新闻
热闻排行
友情链接

Copyright (C) 2016 德化新闻中心 版权所有,未经授权禁止复制或镜像,本站保留所有权利
蜀icp备14010686号-1