1 如何才能产生死锁
产生死锁的四个必要条件:
- 互斥条件:所谓互斥就是进程在某一时间内独占资源。
- 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
- 不剥夺条件:进程已获得资源,在末使用完之前,不能强行剥夺。
- 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
2 Java死锁的简单例子
两个线程互相占有对方需要的资源而不释放,便形成了死锁。
代码如下:
Program.java
/**
* 程序类
*/
public class Program implements Runnable {
//两个静态的资源
public static Object obj1 = new Object();
public static Object obj2 = new Object();
//标志位
public int flag = 1; //1 or 2
@Override
public void run() {