关于多线程,执行先后的问题。望给与提示。谢谢!
class NewThread implements Runnable
{
Thread t;
NewThread()
{
t=new Thread(this,"Demo Thread");
t.start();
}
public void run()
{
System.out.println("Child thread running");
}
}
class ThreadDemo
{
public static void main(String args[])
{
new NewThread();
System.out.println("Main thread point.");
}
}
运行ThreadDemo后结果如下:
Main thread point.
Child thread running
另我困惑不解的是:为什么Child thread running会在Main thread point.之后?
我认为在System.out.println("Main thread point.");之前已经new了NewThread,那么程序将先运行NewThread的构造函数,而构造函数中的t.start();使NewThread开始运行,那么将先运行System.out.println("Child thread running");然后再返回到ThreadDemo中继续运行System.out.println("Main thread point.");。如果这样的话,结果就该是:
Child thread running
Main thread point.
为什么会不是这样呢?
请高手给与提示。
问题点数:50、回复次数:3Top
1 楼zfluo(云淡风清)回复于 2002-05-01 04:54:08 得分 30
线程start了,但是还处于等待的状态,
要分配到了CPU才能处于活跃的状态。
理论上
Main thread point.
Child thread running
和
Child thread running
Main thread point
都有可能Top
2 楼jatom(SoftWind)回复于 2002-05-01 08:53:09 得分 20
具体要看虚拟机怎么调度了,两个结果都有可能的Top
3 楼xuchen_sh(宇称不守恒)回复于 2002-05-01 09:32:48 得分 0
多谢两位了!Top




