gpt4 book ai didi

JAVA ScheduledExecutorService - 每天重复运行一次特定作业

转载 作者:行者123 更新时间:2023-12-01 13:11:04 27 4
gpt4 key购买 nike

我正在编写 J2SE 应用程序,其目的是每天向远程服务器发送一定数量的请求。每天(甚至每小时)发送的请求数量有限 - 每天 100K 请求 && 每小时 10K => 大约。每 2.8 秒 1 个请求。

我只编写了示例程序,每 15 秒打印一些内容 - 作为重复,我使用了 ScheduledExecutorService 和 ScheduledFuture,其中我指定了我的可运行项,无启动延迟,并且重复延迟 = 15000,时间单位 = MILLISECONDS。

在我的测试可运行中,我尝试模拟在循环中执行某些操作(只是简单的 println() 和这些迭代之间的 sleep(2800) ) - 因为我处于计划任务中,接下来的执行间隔为 15 秒,我刚刚意识到我需要打印 6 次 => 6*2800=14000,最多 15000 就可以了。但是正如我在 sleep 时看到的那样,本应在 15000 毫秒后发生的整个任务的下一次执行实际上发生在:14000 毫秒 + 15000 毫秒之后。我猜这个 sleep (2800)对它有一些影响。

正如我所说,我需要每天重复发送一次某些请求,发送之间有一些时间延迟 - 但在下一个 24 小时后不要触及此任务的整体执行。我怎样才能实现这个目标?

使用:ScheduledFuture、ScheduledExecutorService、ThreadFactory

如果有人可以帮忙,这是我的代码 https://db.tt/vznt4PWG ,它是一个 Eclipse 项目。

最佳答案

解决方案:

ScheduledExecutorService scheduledExecutor = Executors.newSingleThreadScheduledExecutor(new     ThreadFactory() {

@Override
public Thread newThread(Runnable runnable) {
return new Thread(runnable, "MY_REPEATING_JOB");
}
});
Runnable jobToExecute = new MyJob();
scheduledExecutor.scheduleWithFixedDelay(jobToExecute, 0, 1, TimeUnit.NANOSECONDS);

我在 Runnablerun() 方法中控制 MyJob 内的等待 - 基本上,当某些操作结束时,我会计算差异时间直到 I想要等待,我就用这个时间sleep()

任务正在重复执行,直到我在代码中执行执行器的 shutdown() 操作。

关于JAVA ScheduledExecutorService - 每天重复运行一次特定作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22865505/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com