ExecutorService 仅运行最近添加的 Callable

发布于 2025-01-04 00:32:33 字数 175 浏览 1 评论 0原文

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

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

我当前的方法是重写exe​​cute()和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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

萧瑟寒风 2025-01-11 00:32:33

不明白,为什么不保存向服务发布可调用时返回的 Future ,然后如果不需要的话 cancel() 未来它被执行。

例如,

Future f1 = service.submit(some_task);

// later

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

IMO 更清洁...

Don't get it, why don't you save the Future returned on posting a callable to the service, and then cancel() the future if you don't want it to be executed.

e.g.

Future f1 = service.submit(some_task);

// later

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

Cleaner IMO...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文