死锁

ES2016_14353285 涂佳灵
一、死锁停在第几次的截图

2.jpg

二、产生死锁的四个条件
1、互斥条件:一个资源每次只能被一个进程使用
2、请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放
3、不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺
4、循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系

三、产生死锁的原因

3.jpg
4.jpg

在主线程中,a要调用methodA这个函数,需要参数b。在子线程中,b要调用methodB这个函数,需要参数a。当
synchronized void methodA(B b){
b.last();
}

synchronized void methodB(A a){
a.last();
}
同时执行时,会进入忙等待,被阻塞。
即当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其他synchronized(this)同步代码块的访问将被阻塞。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、竞态条件: 定义:竞态条件指的是一种特殊的情况,在这种情况下各个执行单元以一种没有逻辑的顺序执行动作,从而导致...
    Hughman阅读 1,331评论 0 7
  • 产生死锁的代码 之后用预处理文件Deadlock.bat运行#!/bin/bashfor((c=1;c<=300;...
    34a43ac295b8阅读 590评论 0 0
  • Java多线程-死锁什么是死锁? 死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释...
    Java红茶阅读 884评论 0 6
  • 死锁产生的原因和解锁的方法 产生死锁的四个必要条件: (1) 互斥条件:一个资源每次只能被一个进程使用。 (2) ...
    憩在河岸上的鱼丶阅读 1,495评论 0 4
  • I know what it's like to lose your friends because you ar...
    达浪打啦阅读 320评论 0 0