【发布时间】:2012-02-09 00:36:53
【问题描述】:
我有一个单线程执行器服务,用于通过网络获取一些数据。
当用户在搜索框中输入内容时,我正在排队可能的网络任务。我想要的是取消所有以前的请求,只排队并立即运行最新的请求。
我目前的做法是重写execute()和submit()方法并在调用super之前清空队列。
对此有什么想法吗?
【问题讨论】:
标签: java multithreading executorservice executor executors
我有一个单线程执行器服务,用于通过网络获取一些数据。
当用户在搜索框中输入内容时,我正在排队可能的网络任务。我想要的是取消所有以前的请求,只排队并立即运行最新的请求。
我目前的做法是重写execute()和submit()方法并在调用super之前清空队列。
对此有什么想法吗?
【问题讨论】:
标签: java multithreading executorservice executor executors
不明白,为什么不保存在向服务发布可调用时返回的Future,然后保存cancel() 如果你不希望它被执行的未来。
例如
Future f1 = service.submit(some_task);
// later
f1.cancel(true); // will interrupt if running...
更清洁的海事组织...
【讨论】: