gpt4 book ai didi

java - 在java中安排任务

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:47:26 28 4
gpt4 key购买 nike

在我的 java web 应用程序中,我想安排一个任务。

我在网上搜索了很多,但找不到适合我的情况的调度程序。在应用程序中,我有不同类型的用户。对于特定的用户类型,我想安排一个任务。

当用户采取关键操作时:

  • 我想在 15 分钟后向该特定用户发送电子邮件
  • 我想在 30 分钟后发送另一封电子邮件
  • 我想发送另一封电子邮件并关闭调度程序。

我知道用户何时采取关键操作以及如何发送电子邮件,但我对日程安排没有太多经验。

谁能帮我处理这个案子?

最佳答案

为什么不使用 ScheduledExecutor? http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledExecutorService.html

它有一个方法 schedule 允许你安排你想要的任何任务(你传递一个可运行的)。所以基本上,对于每个用户,您安排一个发送电子邮件的任务并安排另一个任务。

import static java.util.concurrent.TimeUnit.*;

class Task implements Runnable {
private final User user;
private final int rep;
private final ScheduledExecutorService scheduler;

public Task(User user, int rep, ScheduledExecutorService scheduler) {
this.user = user;
this.rep = rep;
this.scheduler = scheduler;
}

public void run() {
// send an e-mail to user
if (rep > 0)
scheduler.schedule(new Task(user, rep - 1, scheduler), 15, MINUTES);
}
}

class Example {
private final ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1);

public void sendEmails() {
// foreach user
scheduler.submit(new Task(user, 3, scheduler));
}
}

您可能希望使用具有多个线程的预定线程池。

关于java - 在java中安排任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22320920/

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