在我的 Java 程序中,我有一个可以快速连续触发事件的文本组件。由于每当修改文本时我都会进行大量后台处理,因此这会显着降低文本组件的响应能力。这就是为什么我想引入延迟:当文本组件开始触发时,附加的监听器应该等待一定的时间(例如 1 秒),直到文本组件“平静下来”,然后开始其自己的处理。
我知道推出自己的简单延迟机制来实现我想要的功能相对容易,但我想知道java.util.concurrent
包(或其他一些系统包)是否有一个现成的解决方案。我一直在研究
Executors.newScheduledThreadPool(int)
但这似乎不是我想要的,因为这将触发所有传入事件 - 我只希望恰好一个事件在延迟后到达监听器。
提前致谢。
最佳答案
您已经非常接近解决方案了。
您想要的是安排在未来一秒钟触发监听器,但在下一个事件到达时取消该事件(如果尚未发生)并重新安排。使用执行器是合理的,但关键是您需要保留调度返回的 Future
对象,因为它是您取消的那个。
关于java - Java程序中的事件延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6979403/