class Runner extends Thread{
public void run(){
for(int i=0;i<5;i++)
{
System.out.println("Counting "+i);
}
}
}
public class App {
public static void main(String args[])
{
Runner runner1=new Runner();
runner1.start();
Runner runner2=new Runner();
runner2.start();
}
}
我只是在学习Java中线程的基础知识。预期的输出是:
Counting 0
Counting 0
Counting 1
Counting 1
Counting 2
Counting 2
Counting 3
Counting 3
Counting 4
Counting 4
但是获得这样的输出似乎无法解释这一点:
Counting 0
Counting 1
Counting 2
Counting 3
Counting 4
Counting 0
Counting 1
Counting 2
Counting 3
Counting 4
最佳答案
没有任何类型的同步,就不可能期望多个线程的执行顺序(和指令交织)。
在您的示例中,您可以通过在循环的每次迭代中放置较长的暂停时间(Thread.sleep)来获得预期的输出(从技术上讲,仍不能保证,但实际上是不可避免的)。
关于java - Java线程:运行简单的Java线程程序输出困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26667803/