Java线程:运行简单的java线程程序输出混乱

时间:2014-10-31 04:58:52

标签: java multithreading

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

2 个答案:

答案 0 :(得分:2)

没有任何类型的同步,对多个线程的执行顺序(以及指令的交错)都没有期望。

在你的例子中,你可以通过在循环的每次迭代中放置长暂停(Thread.sleep)来获得预期的输出(在技术上仍然不能保证,但实际上是不可避免的)。

答案 1 :(得分:0)

请在代码中提供Thread sleep。它将在两个线程之间并发运行。

System.out.println("counting"+i)
Thread.sleep(500)

请在run方法中插入这些代码.IT可以随心所欲地使用