[英]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.