java - Java程序中的事件延迟

标签 java concurrency

在我的 Java 程序中,我有一个可以快速连续触发事件的文本组件。由于每当修改文本时我都会进行大量后台处理,因此这会显着降低文本组件的响应能力。这就是为什么我想引入延迟:当文本组件开始触发时,附加的监听器应该等待一定的时间(例如 1 秒),直到文本组件“平静下来”,然后开始其自己的处理。

我知道推出自己的简单延迟机制来实现我想要的功能相对容易,但我想知道java.util.concurrent包(或其他一些系统包)是否有一个现成的解决方案。我一直在研究

Executors.newScheduledThreadPool(int)

但这似乎不是我想要的,因为这将触发所有传入事件 - 我只希望恰好一个事件在延迟后到达监听器。

提前致谢。

最佳答案

您已经非常接近解决方案了。

您想要的是安排在未来一秒钟触发监听器,但在下一个事件到达时取消该事件(如果尚未发生)并重新安排。使用执行器是合理的,但关键是您需要保留调度返回的 Future 对象,因为它是您取消的那个

关于java - Java程序中的事件延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6979403/

相关文章:

java - 不同类(class)的不同 Eclipse 工作区

java - 点击后服务不停止

java - "intelligently"解析用户输入参数

concurrency - Clojure 中的 `ensure` 函数在 `let` 中行为不端?

c# - 数据表并发锁定

java - HTTP 代理连接共享

java - 如何在 JSF 中的数据表顶部添加新行?

c++ - 线程安全堆栈 C++ 中的潜在死锁

iphone - UITableView - 延迟加载联系人图像

performance - 从并发编程(语言)中受益?