java – ExecutorService只运行最近添加的Callable

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

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

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

有什么想法吗?

解决方法:

不要得到它,为什么不保存在向服务发布可调用时返回的Future,然后如果你不希望它被执行则取消()未来.

例如

Future f1 = service.submit(some_task);

// later

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

更清洁的IMO ……

上一篇:ExecutorService-中断线程的操作shutdown和shutdownNow


下一篇:java – ExecutorService.invokeAll不支持可运行任务的集合