您的位置:首页 > 编程语言 > Java开发

Java基础_线程_多线程_死锁

2013-01-08 14:03 127 查看
两个线程都持有某一对象的锁,并试图得到对方持有对象的锁,这就造成了死锁

public class DeadLockTest implements Runnable {

static Object o1 = new Object();

static Object o2 = new Object();

boolean flag = true;

public void run() {

// TODO Auto-generated method stub

if(flag == true) {

synchronized(o1) {

try {

Thread.sleep(500);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

synchronized(o2) {

System.out.println("flag == true");

}

}

}

if(flag == false) {

synchronized(o2) {

try {

Thread.sleep(500);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

synchronized (o1) {

System.out.println("flag == false");

}

}

}

}

public static void main(String[] args) {

DeadLockTest t1 = new DeadLockTest();

DeadLockTest t2 = new DeadLockTest();

t1.flag = true;

t2.flag = false;

Thread thread1 = new Thread(t1);

Thread thread2 = new Thread(t2);

thread1.start();

thread2.start();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: