【问题标题】:How to run method/function after every 2 minutes upto 10 minutes in java?如何在java中每2分钟到10分钟后运行方法/函数?
【发布时间】:2021-05-09 15:22:42
【问题描述】:

我尝试在每 2 分钟到 10 分钟后使用线程运行方法/函数,但它占用了大量资源,这会降低服务器速度。

我想实现这样的目标

0-10 分钟= 每 2 分钟调用一次函数

10 分钟后 10-30 分钟 = 每 5 分钟调用一次函数

之后 每 10 分钟最多 5 小时后调用函数

【问题讨论】:

标签: java multithreading spring-boot timer


【解决方案1】:

你没有指定你想要的调度系统,

但如果你使用石英,那么以下两者的组合就可以解决问题:

这将改变作业的 cron 触发器:

reschedule a job using quartz

在这里,您将计算调用次数, 因为这还不够,您还将添加一个当前状态的枚举,以了解您处于这三个状态的哪一部分:

count number of invocation using atomic integer

@Data
public class triggerHourHelper {
    private TaskPart taskPart;
    private AtomicInteger counter;
} 

public enum TaskPart {
   ONE,TWO,THREE
}

您所要做的就是在工作结束时检查 numberOfInvocation => 是否等于 X(数字表示我们应该移至下一部分),

简单示例(您可以使用 switch case 或其他更多 java 8+ 方法来实现此目的):

private boolean shouldReschedule() {
    if(ONE.equals(taskPart)){
        return numberOfInvocation == 5; 
    }
    //else if... 
}

【讨论】:

  • 我正在使用任务计划
  • @Aman Mate 任何框架的概念都是一样的
猜你喜欢
  • 2023-03-16
  • 2012-04-29
  • 1970-01-01
  • 1970-01-01
  • 2017-10-15
  • 1970-01-01
  • 2021-09-03
  • 2016-09-28
  • 2021-07-23
相关资源
最近更新 更多