是否有任何类型的Runnable,Callable或Thread能够在任何时间内停止它?具有在任何时间段内停止该线程的线程
我写了这样的事情
public class ThreadRunner {
private ExecutorService threadPoolExecutor;
ThreadRunner() {
threadPoolExecutor = Executors.newSingleThreadExecutor();
}
public void startThread(String endPoint, ProgressBar progressBar) {
Runnable task =() -> {
// some code which saves images from URL (1230 images) and updates progress bar
};
threadPoolExecutor.execute(task);
}
public void stopThread() {
threadPoolExecutor.shutdownNow();
}
}
线程中运行正常,图像被保存,更新进度条,但是当我想停止线程通过调用(或者甚至暂停节省如果可能的过程) ThreadRunner类的方法 - 没有任何反应。
我做错了什么?或者很可能 - 我做错了什么?
[The Java Tutorials:Interrupts](https://docs.oracle.com/javase/tutorial/essential/concurrency/interrupt.html) –
在ExecutorService上读取JavaDoc。shutdownNow()'它应该变得更清楚:该调用将导致执行程序服务关闭,它将_try_中断已运行的任务,但“任何无法响应中断的任务可能永远不会终止”(来自JavaDoc)。这一切都取决于你的任务如何反应中断。假设你的任务运行一个循环,你可以在循环体中检查'Thread.isInterrupted()'。 – Thomas
有没有可能do..while循环(放置在Runnable中)不想让线程关闭? –