这个就是死锁的小程序案例 :
/**
* 这个是练习死锁的小程序
*
* @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();
}