java.util.Timer -- 如何使它立即触发(在其实际计划之前)

4

我在应用程序中使用了java.util.Timer,在特定时刻触发。但是某些事件可能会发生,需要触发由计时器触发的事情。

是否有可能使计时器提前触发?


3
当特定事件发生时,你不能直接调用具有所需功能的方法吗? - tobiasbayer
是的,我最终将那个功能重构为一个单独的静态方法,并从计时器和其他地方调用它。 - Ibolit
2个回答

2

你的要求似乎是相互矛盾的。事情会按照计划或随机事件发生,但不可能同时发生。

看起来,对于那些不适合进入调度程序的事件,你希望将它们广播到一个监听器,该监听器可以生成一个Executor来异步处理它们。


不完全正确。用户可以在系统中停留N分钟,然后一些注销逻辑会启动。如果用户在此之前离开了系统,我们必须立即执行该逻辑。我想到的其中一种变体是过早地触发计时器。 - Ibolit
1
计时器是如何知道的呢?听起来像是超时逻辑,意味着另一个事件。将逻辑放在一个类中,监听相应的事件可以触发它。 - duffymo

1

TimerTask是一个Runnable,因此您可以直接在新线程中执行它。

要立即“运行”,您可以执行以下操作:

  1. 取消TimerTask
  2. 在新线程中直接运行TimerTask
  3. 创建并安排一个新的TimerTask

虽然我不会说这是一个好的设计选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接