我使用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);
}
答案 0 :(得分:0)
保留您的预定未来以供将来参考。
final ScheduledFuture<?> scheduledFuture = scheduledThreadPool.scheduleWithFixedDelay(runnable, INITIAL_DELAY,
DELAY, TimeUnit.SECONDS);
要取消,请在Future上调用cancel(boolean)方法:
scheduledFuture.cancel(true);
您必须保留您将在池中创建的所有期货,以便稍后取消。