有 Java 编程相关的问题?

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

多线程强制在Java应用程序中定期执行周期性任务

ScheduledExecutorService似乎存在一个问题,即如果无法获得空闲线程,周期性任务将延迟执行。不幸的是,分配给它的定期任务确实需要公平地按计划进行。目前,它被安排为每分钟一次,但有时由于应用程序忙于其他事情(我想这就是原因),它无法在五分钟内完成,而五分钟恰好是“主要生产错误”的阈值

如何通过优先排序或控制线程平衡器来强制执行此操作


共 (1) 个答案

  1. # 1 楼答案

    如果您的ScheduledExecutorService用于其他任务,或者如果您的任务有时需要超过1分钟才能运行,则只需增加ScheduledExecutorService中可用的线程数即可。因此,如果一个任务尚未完成运行,那么执行者仍然可以运行一个新任务

    ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(10);
    

    (我随机选择了10个——如果你每分钟运行一次任务,并且它最多可以运行5分钟,这会给你留下一些错误的余地)