我对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
。