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/

10-10 08:05