求解答?你能帮我分析下这程序的输出结果吗?(详细)
java吧
全部回复
仅看楼主
level 1
zm940650424 楼主
public class Deadlock1 implements Runnable{int b=100;public synchronized void m1()throws Exception{ Thread.sleep(5000);System.out.println("b="+b);}public synchronized void m2()throws Exception{ Thread.sleep(2500);b=2000;System.out.println(b);}public void run(){try{m1();}catch(Exception e){e.printStackTrace();}}
/** * @param args */public static void main(String[] args)throws Exception {// TODO Auto-generated method stubDeadlock1 t=new Deadlock1();Thread r=new Thread(t);r.start();t.m2();
}
}
2013年01月18日 11点01分 1
level 6
好像是等待一段时间打印一个东西
2013年01月18日 12点01分 2
level 12
[汗]不好阅读啊!截图或者手打吧
2013年01月18日 13点01分 3
关键是不知道先执行那个?m1(),还是m2()?
2013年01月18日 13点01分
回复 zm940650424 :必须是m2,你启动了两个线程,其中一个sleep5000,一个sleep2500,,肯定是m2先执行啊
2013年01月19日 02点01分
level 6
这个是线程的问题了谁都说不准 你运行下试试 啊
2013年01月18日 22点01分 4
运行了几次。结果不太一样
2013年01月19日 04点01分
回复 zm940650424 :这个当然不一样啊!!!你老师是咋教的啊??、
2013年01月23日 10点01分
回复 蓝色的飞雨 :嗯,是不一样
2013年01月23日 12点01分
level 1
断点跟 2000 b=2000
2013年01月19日 04点01分 5
这只是其中一个结果。
2013年01月19日 04点01分
level 1
我每次执行结果都一样
2013年01月21日 10点01分 6
我试了几次不完全一样
2013年01月21日 13点01分
level 4
public class Deadlock1 implements Runnable
{ int b=100; public synchronized void m1()
throws Exception{ Thread.sleep(5000);
System.out.println("b="+b);}
public synchronized void m2()
throws Exception{ Thread.sleep(2500); b=2000;
System.out.println(b); }
public void run(){ try{m1();}
catch(Exception e){e.printStackTrace(); } }
/** * @param args */
public static void main(String[] args)throws Exception
{ // TODO Auto-generated method stub Deadlock1 t=new Deadlock1(); Thread r=new Thread(t); r.start(); t.m2();
}
}
2013年01月23日 11点01分 7
谢谢了
2013年01月23日 12点01分
回复 zm940650424 :客气了
2013年01月23日 12点01分
1