[英]Using for-loop inside thread won't match similar while-loop behavior
我剛開始在Java中使用線程,但是在線程內部使用for循環時遇到了問題。
當我在線程內使用for循環時,由於某種原因,我看不到要發送到屏幕的輸出。
當我使用while循環時,它就像一種魅力。
無效代碼如下:
public class ActionsToPerformInThread implements Runnable {
private String string;
public ActionsToPerformInThread(String string){
this.string = string;
}
public void run() {
for (int i = 1; i == 10 ; i++) {
System.out.println(i);
}
}
}
調用代碼:
public class Main {
public static void main(String[] args) {
Thread thread1 = new Thread(new ActionsToPerformInThread("Hello"));
Thread thread2 = new Thread(new ActionsToPerformInThread("World"));
thread1.start();
thread2.start();
}
}
我的問題是: 為什么當我用while循環替換for循環並嘗試將相同的輸出打印到屏幕上時,它不起作用?
我嘗試調試它,但似乎程序在到達其打印部分之前已停止(沒有異常或錯誤)。
for (int i = 1; i == 10 ; i++) {
System.out.println(i);
}
你的意思是?
i <= 10
i == 10是1 ==10。它總是錯誤的。
您在for循環中有一個愚蠢的錯字:
for (int i = 1; i == 10 ; i++) {
...
}
應該讀為:
for (int i = 1; i <= 10 ; i++) {
...
}
Java中典型的 for循環如下所示:
//pseudo code
for( variable ; condition ; increment or decrement){
//code to be executed...
}
這個怎么運作 :
variable
(也可以在循環外聲明) condition
(如果為true
,則執行循環內的代碼,否則,如果第一次失敗,則甚至不會進入循環。 increment or decrement
操作,然后再次執行第2步...重復進行,直到condition
為false
然后循環退出。 在您的情況下,您的condition
是i == 10
,這當然會在第一次檢查時失敗,因為i
仍為1
且尚未更改,結果for循環內的代碼甚至沒有執行,也沒有進入循環完全沒有
要解決此問題:您需要將condition
更改為i <= 10
。 這樣,您就告訴循環“只要i
小於或等於10,就繼續循環”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.