這個就是死鎖的小程序案例 :
/**
* 這個是練習死鎖的小程序
*
* @author YouGe
*
*/
public class SisuoTest {
public static void main(String arg[]) {
Thread t1 = new Thread(new Sisuoclass(true));//建立一個線程
Thread t2 = new Thread(new Sisuoclass(false));//建立另一個線程
t1.start();//啓動一個線程
t2.start();//啓動另一個線程
}
}
/**
* 線程的類
* @author YouGe
*
*/
class Sisuoclass implements Runnable {
public boolean falg;//控制線程
Sisuoclass(boolean falg) {
this.falg = falg;
}
public void run() {
/**
* 如果falg的值爲true則調用t1線程
*/
if (falg) {
while (true) {
synchronized (Suo.OB1) {
System.out.println("if 我是OB1");
synchronized (Suo.OB2) {
System.out.println("if 我是OB2");
}
}
}
}
/**
* 如果falg的值爲false則調用t2線程
*/
else {
while (true) {
synchronized (Suo.OB2) {
System.out.println("else 我是OB2");
synchronized (Suo.OB1) {
System.out.println("else 我是OB1");
}
}
}
}
}
}
/**
* 用於鎖的對象
* @author YouGe
*
*/
class Suo {
static Object OB1 = new Object();
static Object OB2 = new Object();
}