我对Java线程有疑问。这是我的情况:

我有一个线程调用可能需要一段时间的方法。直到我得到结果,线程才会继续使用该方法。如果我以相同的方式向该方法发送另一个请求,则现在有两个线程正在运行(前提是第一个线程尚未返回结果)。但是我想将优先级赋予最后一个线程,并且不想从先前启动的线程中获得结果。那么当我没有stop方法时,如何摆脱早期的线程呢?

最佳答案

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

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

   public void stop() {
      running = false;
   }

   public void run() {
      while (running) {
         // do your things
      }
   }
}

这样,您可以很好地终止线程,即无需抛出InterruptedException

09-16 05:41