死锁

发生死锁的4个必要条件

  1. 互斥条件 : 一个资源同一时间只能被一个线程获得使用资格
  2. 请求和保持条件 : 对已获得的资源在为使用完之前不可释放
  3. 不可剥夺条件 : 不能通过外部因素强制释放已获得的资源
  4. 环路等待条件 : 若干进程之间形成一种头尾相接的循环等待资源关

死锁举例

public class test {
  
      private Object lock1 = new Object();
      private Object lock2 = new Object();

      public void func1(){
           synchronized(lock1){
                  // dosomething
                 synchronized(lock2){
                       // dosomething
                 }
           }
      }
     
      public void func2(){
           synchronized(lock2){
                  // dosomething
                 synchronized(lock1){
                       // dosomething
                 }
           }
      }


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

推荐阅读更多精彩内容

  • 死锁产生的原因和解锁的方法 产生死锁的四个必要条件: (1) 互斥条件:一个资源每次只能被一个进程使用。 (2) ...
    憩在河岸上的鱼丶阅读 1,495评论 0 4
  • 1、竞态条件: 定义:竞态条件指的是一种特殊的情况,在这种情况下各个执行单元以一种没有逻辑的顺序执行动作,从而导致...
    Hughman阅读 1,331评论 0 7
  • 参考http://blog.sina.com.cn/s/blog_5e3604840100ddgq.html de...
    鱼仔_1625阅读 284评论 0 0
  • 一、什么是死锁 所谓死锁,是指多个进程循环等待它方占有的资源而无限期地僵持下去的局面。 二、产生死锁的必要条件 互...
    Q南南南Q阅读 792评论 0 0
  • 我爱你 别忘了在我耳畔起的誓 我不仅要你最柔情的温柔 糖似的含在嘴里 我要你的爱有磐石般坚韧不移 在这流动的生里筑...
    指尖露水阅读 194评论 0 1