簡體   English   中英

變量設置為false后,如何停止線程?

[英]How to stop threads once variable has been set to false?

我的布爾變量設置為false后,如何停止所有線程繼續執行? 例如,下面是一個簡單的代碼:

class testing implements Runnable{
   static boolean var;
   int id;
   public void run(){
      System.out.println(id);
      var = false;
   }
   testing(int id){
      this.id = id;
   }
   public static void main(String[] args){
      int i = 1;
      var = true;
      while(var){
         new Thread(new testing(i++)).start();
      }
   }
}

我只想打印“ 1”,但是當我執行此代碼時,會得到多個數字。 我該如何預防?

您無法在Java中做到這一點,因為Java不具有C#這樣的屬性。 Java中最好的解決方案是這樣做:

public void setMyVariable(boolean v) {
    var = v;
    // code to stop executing threads
}

但是,如果您仍然想要按照自己的方式進行操作 ,則有一種更糟糕的方法:

創建一個新線程,並運行以下代碼:

boolean run = true;
while(run) {
    if (!var) {
        // code to stop your threads
        run = false;
    }
}

但是請記住,第二種方法實際上並不是您的選擇。 堅持第一種方法會更好

暫無
暫無

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

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