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