如何在没有stop()方法的情况下停止线程?

ban*_*dit 5 java multithreading android delay

我对Java线程有疑问.这是我的场景:

我有一个线程调用一个可能需要的方法.线程保持自己的方法,直到我得到结果.如果我以相同的方式向该方法发送另一个请求,现在有两个线程在运行(前提是第一个没有返回结果).但我想优先考虑最后一个线程,并且不希望从先前启动的线程中获得结果.那么当我没有停止方法时,我怎么能摆脱早期的线程呢?

Jan*_*net 5

标准设计模式是在线程中使用可以设置为停止它的局部变量:

public class MyThread extends Thread {
   private volatile boolean running = true;

   public void stop() {
      running = false;
   }

   public void run() {
      while (running) {
         // do your things
      }    
   }
}
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以平滑地终止线程,即无需抛出线程InterruptedException.


ins*_* me 2

你可以中断一个线程,它的执行链大多数时候会抛出InterruptedException(请参阅文档中的特殊情况)。