【发布时间】:2014-06-24 14:06:47
【问题描述】:
我正在使用 Executors.newFixedThreadPool 每两分钟启动一个线程,该线程将数据发送到服务器。
一段时间后将没有任何数据要发送。在这种情况下,我该如何关闭池。 我可以从通过 ThreadPool 运行的同一线程启动池的关闭
代码是:
scheduledThreadPool = Executors.newScheduledThreadPool(5);
Runnable runnable = new Runnable() {
@SuppressLint("ShowToast")
public void run() {
Log.e("Thread Pool -1 is running", "ThreadPool-1");
sendDataToServer();
}
};
scheduledThreadPool.scheduleWithFixedDelay(runnable, INITIAL_DELAY,
DELAY, TimeUnit.SECONDS);
}
【问题讨论】:
-
你能发布你的动态添加到池中的线程吗?
-
您希望整个池停止还是只运行 1 个?
-
我想停止整个池
-
池本身没有做任何事情。它创建的 Futures 正在完成这项工作,因此您必须阻止它们,而不是阻止池。只需保留您创建的 Futures 上的引用,然后在需要时取消它们。