死锁是指两个或多个线程在执行过程中,因争夺资源而造成的互相等待的现象。 死锁的发生需要满足以下四个必要条件: 一、互斥条件:指一种资源同时只能被一个线程占用,如果其他线程想要使用该资源,则必须等待该线程释放该资源。 二、请求与保持条件:指一个线程因请求获得某些资源而阻塞时,它仍继续持有已经获得的资源不释放。 三、不剥夺条件:指一个线程已经获得了某些资源,在没有完成使用之前,不能被其他线程剥夺掉。 四、循环等待条件:指存在一个线程的资源申请序列{R1,R2,…,Rn},其中R1被第一个线程占用,R2被第二个线程占用,依次类推,而Rn被第n个线程占用,同时第一个线程在等待第n个线程释放Rn,形成了一个环路等待的情况。