ExecutorService 仅运行最近添加的 Callable
我有一个单线程执行器服务,用于通过网络获取一些数据。
当用户在搜索框中输入内容时,我正在对可能的网络任务进行排队。我想要的是取消所有以前的请求,只排队并立即运行最新的请求。
我当前的方法是重写execute()和submit()方法并在调用super之前清除队列。
对此有什么想法吗?
I have a single threaded executor service for fetching some data over the network.
As the user is typing in a search box I am enqueuing possible network tasks. What I want is to cancel all previous requests and only enqueue and immediately run the latest one.
My current approach is to override execute() and submit() methods and clear the queue before calling super.
Any thoughts on this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不明白,为什么不保存向服务发布可调用时返回的
Future
,然后如果不需要的话cancel()
未来它被执行。例如,
IMO 更清洁...
Don't get it, why don't you save the
Future
returned on posting a callable to the service, and thencancel()
the future if you don't want it to be executed.e.g.
Cleaner IMO...