java中多线程程序是怎样执行的??
下面程序中执行newNewThread("First");后调用NewThread类的NewThread(Stringth)方法,接着往下执行到t.start();后,为...
下面程序中执行new NewThread("First");后调用NewThread类的NewThread(String th)方法,接着往下执行到t.start();后,为什么不是执行public void run()方法中的语句进而输出System.out.println("测试三");和System.out.println("测试四");后休眠1秒,而是执行System.out.println("测试二");(我是依结果来的) 运行结果为: New thread:Thread[First,5,main] 测试一 测试二 (“测试二”在这输出不明白,我觉得在这地方输出测试三/四,然后等待1秒 New thread:Thread[Second,5,main] 测试一 测试二 New thread:Thread[Third,5,main] 测试一 测试二 测试三 First:3) New thread:Thread[Second,5,main] 测试一 测试二 New thread:Thread[Third,5,main] 测试一 测试二 测试三 First:3 。 。 。 package hello; public class Main { public static void main(String[] args) { new NewThread("First"); new NewThread("Second"); new NewThread("Third"); try { Thread.sleep(10000); } catch(InterruptedException e) { System.out.println("Mainthread Interrupted"); } System.out.println("测试五"); System.out.println("Main thread exiting"); } } class NewThread implements Runnable { String name; Thread t; NewThread(String th) { name =th; t=new Thread(this,name); System.out.println("New thread:"+t); System.out.println("测试一"); t.start(); System.out.println("测试二"); } public void run() { try {System.out.println("测试三"); for(int i=3;i>=0;i--) { System.out.println(name+":"+i); System.out.println("测试四"); Thread.sleep(1000); } }catch(InterruptedException e) { System.out.println(name+"Interrupted"); } System.out.println(name+"exiting)"); } }
展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询