死锁

2017-09-29  本文已影响0人  坚强一点

发生死锁的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
上一篇 下一篇

猜你喜欢

热点阅读