一个奇怪的死锁程序!!!

MaJH58 2008-04-03 03:34:35
我写了一个关于死锁的程序,但是当运行时却没有出现死锁!请大家帮我看一下是哪出了问题?


public class TestDeadLock implements Runnable{

static Object o1 = new Object();
static Object o2 = new Object();

public int flag ;

public static void main(String[] args) {
TestDeadLock td1 = new TestDeadLock();
Thread t1 = new Thread(td1);
td1.flag = 0;
t1.start();
Thread t2 = new Thread(td1);
td1.flag = 1;
t2.start();
}

public void run() {
if(flag == 1) {
System.out.println("The flag = "+flag);
synchronized(o1) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized(o2) {
System.out.println("The first is finished!");
}
}
}
else if(flag == 0) {
System.out.println("The flag = "+flag);
synchronized(o2) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized(o1) {
System.out.println("The second is finished!");
}
}
}
}

}
...全文
42 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
snowdymy 2008-04-03
  • 打赏
  • 举报
回复

public static void main(String[] args) {
TestDeadLock td1 = new TestDeadLock();
Thread t1 = new Thread(td1);
td1.flag = 0;
t1.start();

/* try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}*/

Thread t2 = new Thread(td1);
td1.flag = 1;
t2.start();
}

打開註釋。就會出現死鎖!

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧