Java 中死鎖的程序案例

這個就是死鎖的小程序案例 :

 /**

 * 這個是練習死鎖的小程序

 * 

 * @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();

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章