在我的Java程序中,我有一个可以快速连续触发事件的文本组件。由于每当文本被修改时我都会进行大量的后台处理,这会显着降低文本组件的响应性。这就是我想引入延迟的原因:当文本组件开始触发时,附加的侦听器应该等待一段时间(例如1秒),直到文本组件“平静下来”,然后开始自己的处理
我知道滚动我自己想要的简单延迟机制相对容易,但我想知道java.util.concurrent
包(或其他一些系统包)是否有现成的解决方案。我一直在研究
Executors.newScheduledThreadPool(int)
但这似乎不是我想要的,因为这会激发所有传入的事件 - 我只想要一个事件来完成它延迟之后给听众。
提前致谢。
答案 0 :(得分:1)
你非常接近解决方案。
你想要的是安排将一个侦听器发射到将来一秒钟,但是当下一个事件到来时(如果它还没有发生)取消它并重新安排。使用执行程序是合理的,但关键是您需要保留调度返回的Future
对象,因为它取消了 。