有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (6) 个答案

  1. # 1 楼答案

    计时器任务应该快速执行,轮询间隔与其使用无关。确保你没有混淆两者

  2. # 2 楼答案

    在这种情况下,这意味着您必须在下一个计时器事件发生之前完成工作,否则将无法处理下一个事件。因为timer类是全局的,所以您永远无法确定还有谁在使用它(例如,您的DB驱动程序可能正在使用它来实现超时)

    如果您必须执行长时间的工作,请使用计时器“启动”另一个线程(将项目添加到工作队列或启动计时器事件处理程序中的第二个线程)。这将很快为下一个事件释放计时器

  3. # 3 楼答案

    我想你说的是java。util。计时器,而不是特定于摆动的计时器

    如果我没记错的话,该计时器只是将执行延迟到一个后台线程,该线程基本上为JVM中的每个计时器实例提供服务,因此问题可能是一个计时器占用了该线程,而其他计时器则占用了该线程

    如此快速将取决于应用程序的其余部分以及是否使用其他计时器

    一般来说,我避免将它用于任何严肃的事情,或者我只是让它产生一个新的线程

  4. # 4 楼答案

    不过,如果从计时器任务中生成一个线程来完成工作,请注意时间触发的速度比线程完成的速度快,从而导致工作负载不断降低

  5. # 5 楼答案

    java.util.concurrent.ScheduledThreadPoolExecutor是“新的java.util.Timer”。你可以有很多线程(一个池),这样你就可以适应长时间运行的任务。即便如此,您可能需要考虑检查是否重叠太多。

    当然,你可以有多个Timer,并适当地分配你的TimerTask

  6. # 6 楼答案

    如果你想快速完成任务,但实际上需要花更长的时间,你可以把它分成两部分。设置一个在计时器启动时运行的函数,以便在正确的时间发生事情,但随后将重要的处理推迟到另一个函数(例如,在不同的线程中),这可能需要多长时间。从API来看,计时器任务耗时过长的问题在于它们占用了线程,可能会延迟后续任务,因此将耗时的处理转移到另一个线程应该可以避免该问题。要回答标题中的问题,“快速”意味着“应该在计时器再次启动之前完成”