【发布时间】:2015-11-22 11:06:13
【问题描述】:
以下程序不应该按顺序执行,但它仍在执行。
class A extends Thread
{
public void run()
{
for(int i=0; i<=5; i++)
{
System.out.println("Thread A : "+i);
}
System.out.println("exit from A");
}
}
class B extends Thread
{
public void run()
{
for(int j=0; j<=5; j++)
{
System.out.println("Thread B: "+j);
}
System.out.println("exit from B");
}
}
class C extends Thread
{
public void run()
{
for(int k=0; k<=5; k++)
{
System.out.println("Thread C : "+k);
}
System.out.println("exit from C");
}
}
class ThreadCounter
{
public static void main(String arg[])
{
new A().start();
new B().start();
new C().start();
}
}
我得到的输出是:
Thread A start
Thread A : 1
Thread A : 2
Thread A : 3
Thread A : 4
Thread A end
Thread B start
Thread B : 1
Thread B : 2
Thread B : 3
Thread B : 4
Thread B end
Thread C start
Thread C : 1
Thread C : 2
Thread C : 3
Thread C : 4
Thread C end
你能告诉我为什么会这样执行吗? 执行不应该只在运行时是顺序的吗
【问题讨论】:
-
尝试在每个循环的每次迭代中添加
Thread.yield()或Thread.sleep。 -
可能是因为循环很小。睡一觉就可以了。
-
是的,我现在可以通过将循环增加到 1000 来查看程序的多线程性质,甚至无需使用 sleep() 、 wait() 等
标签: java multithreading java-threads