java写一个死锁的例子,执行结果不是死锁,看看我哪儿写错了?
classTestimplementsRunnable{privatebooleanflag;Test(booleanflag){this.flag=flag;}publ...
class Test implements Runnable{ private boolean flag; Test (boolean flag) { this.flag=flag; }
public void run() { if(flag) { synchronized(MyLock.locka) { System.out.println("if locka"); synchronized(MyLock.lockb) { System.out.println("if lockb"); } } } else { synchronized(MyLock.lockb) { System.out.println("else lockb"); synchronized(MyLock.locka) { System.out.println("else locka"); } } } }}
class MyLock{ static Object locka = new Object(); static Object lockb = new Object();}
class DeadLockTest{ public static void main(String[] args) { Thread t1 = new Thread(new Test(true)); Thread t2 = new Thread(new Test(false)); t1.start(); t2.start(); }} 展开
public void run() { if(flag) { synchronized(MyLock.locka) { System.out.println("if locka"); synchronized(MyLock.lockb) { System.out.println("if lockb"); } } } else { synchronized(MyLock.lockb) { System.out.println("else lockb"); synchronized(MyLock.locka) { System.out.println("else locka"); } } } }}
class MyLock{ static Object locka = new Object(); static Object lockb = new Object();}
class DeadLockTest{ public static void main(String[] args) { Thread t1 = new Thread(new Test(true)); Thread t2 = new Thread(new Test(false)); t1.start(); t2.start(); }} 展开
4个回答
展开全部
要不这样
if(flag)
{
synchronized(MyLock.locka)
{
System.out.println("if locka");
try{
Thread.sleep(500); 这里让时间缓存下,else那里同理试试看
} catch(InterruptedException e) {
e.printStackTrace() ;
}
synchronized(MyLock.lockb)
{
System.out.println("if lockb");
}
}
}
if(flag)
{
synchronized(MyLock.locka)
{
System.out.println("if locka");
try{
Thread.sleep(500); 这里让时间缓存下,else那里同理试试看
} catch(InterruptedException e) {
e.printStackTrace() ;
}
synchronized(MyLock.lockb)
{
System.out.println("if lockb");
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可能是执行时间的问题,可以在第一次加锁后sleep一些时间,再申请第二个锁试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你看下打印,是否是"if locka“ 然后"if lockb"这样才会死锁,如果不是的话就在System.out.println("if locka"); 后面加 Thread.sleep(1000)试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询