簡體   English   中英

Java線程:運行簡單的Java線程程序輸出混亂

[英]Java threads: Running a simple java thread program output confusion

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)來獲得預期的輸出(從技術上講,仍不能保證,但實際上是不可避免的)。

請在您的代碼中提供線程睡眠。 它將在兩個線程之間同時運行。

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

請在運行方法中插入這些代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM