3

我有一个单线程执行器服务,用于通过网络获取一些数据。

当用户在搜索框中输入时,我正在排队可能的网络任务。我想要的是取消所有以前的请求,只排队并立即运行最新的请求。

我目前的方法是在调用 super 之前覆盖 execute() 和 submit() 方法并清除队列。

对此有什么想法吗?

4

1 回答 1

5

不明白,你为什么不保存Future返回的发布一个可调用的服务,然后cancel()如果你不希望它被执行,那么未来。

例如

Future f1 = service.submit(some_task);

// later

f1.cancel(true); // will interrupt if running...

更清洁的海事组织...

于 2012-02-09T00:53:52.130 回答