开发者社区> 问答> 正文

什么是死锁?

什么是死锁?

本问题来自阿里云开发者社区的【11大垂直技术领域开发者社群】。 点击链接欢迎加入感兴趣的技术领域群。

展开
收起
游客pklijor6gytpx 2019-11-11 14:31:35 10401 0
7 条回答
写回答
取消 提交回答
  • 死锁的产生是必须要满足一些特定条件的: 1.互斥条件:进程对于所分配到的资源具有排它性,即一个资源只能被一个进程占用,直到被该进程释放 2.请求和保持条件:一个进程因请求被占用资源而发生阻塞时,对已获得的资源保持不放。 3.不剥夺条件:任何一个资源在没被该进程释放之前,任何其他进程都无法对他剥夺占用 4.循环等待条件:当发生死锁时,所等待的进程必定会形成一个环路(类似于死循环),造成永久阻塞

    2020-08-03 20:41:40
    赞同 展开评论 打赏
  • 下一站是幸福

    死锁是指两个或两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象。

    2020-03-19 23:30:37
    赞同 展开评论 打赏
  • 线程死锁是指由于两个或者多个线程互相持有对方所需要的资源,导致这些线程处于等待状态,无法前往执行。当线程进入对象的synchronized代码块时,便占有了资源,直到它退出该代码块或者调用wait方法,才释放资源,在此期间,其他线程将不能进入该代码块。当线程互相持有对方所需要的资源时,会互相等待对方释放资源,如果线程都不主动释放所占有的资源,将产生死锁。

    当然死锁的产生是必须要满足一些特定条件的: 1.互斥条件:进程对于所分配到的资源具有排它性,即一个资源只能被一个进程占用,直到被该进程释放 2.请求和保持条件:一个进程因请求被占用资源而发生阻塞时,对已获得的资源保持不放。 3.不剥夺条件:任何一个资源在没被该进程释放之前,任何其他进程都无法对他剥夺占用 4.循环等待条件:当发生死锁时,所等待的进程必定会形成一个环路(类似于死循环),造成永久阻塞。

    2020-03-17 23:55:19
    赞同 1 展开评论 打赏
  • 技术架构师 阿里云开发者社区技术专家博主 CSDN签约专栏技术博主 掘金签约技术博主 云安全联盟专家 众多开源代码库Commiter

    竞争资源,导致线程都占用。

    2020-01-04 23:16:43
    赞同 展开评论 打赏
  • 当两个或多个线程在等待彼此释放所需的资源(锁定)并陷入无限等待即是死锁。发生死锁的四个必要条件缺少一个就不会发生死锁:

    1. 互斥条件:一个资源每次只能被一个进程使用。
    2. 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
    3. 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
    4. 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
    2019-12-11 22:05:14
    赞同 展开评论 打赏
  • 为之则易,不为则难

    死锁指的是当某一个线程正A在占用临界区资源的使用权,而其必须要另外一临界区资源才能执行完成,但是存在另一个临界区资源正被线程B所占有,且线程B需要线程A持有的资源才能只能完成,这个就会导致两个线程都在等待着对方,从而产生死锁。多个线程环形占用资源也是一样的会产生死锁问题。

    2019-11-12 10:08:35
    赞同 展开评论 打赏
  • 两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去

    2019-11-11 14:32:20
    赞同 展开评论 打赏
滑动查看更多
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载