繁体   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