Java程序中的事件延迟

时间:2011-08-08 08:25:21

标签: java concurrency

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

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

Executors.newScheduledThreadPool(int)

但这似乎不是我想要的,因为这会激发所有传入的事件 - 我只想要一个事件来完成它延迟之后给听众。

提前致谢。

1 个答案:

答案 0 :(得分:1)

你非常接近解决方案。

你想要的是安排将一个侦听器发射到将来一秒钟,但是当下一个事件到来时(如果它还没有发生)取消它并重新安排。使用执行程序是合理的,但关键是您需要保留调度返回的Future对象,因为它取消了