下面程序中执行newNewThread("First");后调用NewThread类的NewThread(Stringth)方法,接着往下执行到t.start();后,为什么不是执行publicvoidrun()方法中的语句进而输出System.out.pr...
下面程序中执行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)");
}
}
展开