簡體   English   中英

在內部線程中使用for循環不會匹配類似的while循環行為

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

這個怎么運作 :

  1. 首先聲明您的variable (也可以在循環外聲明)
  2. 然后檢查您的condition (如果為true ,則執行循環內的代碼,否則,如果第一次失敗,則甚至不會進入循環。
  3. 然后完成increment or decrement操作,然后再次執行第2步...重復進行,直到conditionfalse然后循環退出。

在您的情況下,您的conditioni == 10 ,這當然會在第一次檢查時失敗,因為i仍為1且尚未更改,結果for循環內的代碼甚至沒有執行,也沒有進入循環完全沒有

要解決此問題:您需要將condition更改為i <= 10 這樣,您就告訴循環“只要i小於或等於10,就繼續循環”。

暫無
暫無

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

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