我已经将ThreadA和ThreadB定义为以下内容,而在main()方法中,我只是做了
new ThreadA().start(); new ThreadB().start();
所以我看到char“A”和“B”的交错打印,这对我来说很有意义。但我发现无论我运行多少次程序,都会先打印“A”。这只是巧合,还是因为我首先打电话给A的start()?
另外,一旦我在for循环之前在A的run()中引入了一些延迟,或者我首先开始调用B的run(),那么我会先看到B打印。
请帮助我理解这一点。 感谢。
class ThreadA extends Thread
{
@Override
public void run() {
// TODO Auto-generated method stub
for (int i =0;i<10;i++)
{
System.out.println("A");
long start = System.currentTimeMillis();
for(;;)
{
if (System.currentTimeMillis() -start > 100)
break;
}
}
}
}
class ThreadB extends Thread
{
@Override
public void run() {
for (int i =0;i<10;i++)
{
System.out.println("B");
long start = System.currentTimeMillis();
for(;;)
{
if (System.currentTimeMillis() -start > 100)
break;
}
}
}
}