每 5 分钟调用一次方法
Call method once every 5 minutes
我想每 5 分钟发送一封邮件,而不管我在 5 分钟内调用 sendmail() 多少次?
例如
- 如果我在晚上 10 点打电话给 sendmail。应该发送第一封邮件
- 如果我在 10:03 和 10:04 调用 sendmail,则不应发送任何邮件。
- 如果我在 10:06 调用 sendmail,邮件应该被发送,因为不同之处在于
大于 5 分钟
如何实现?
public class SendMyEmail {
private boolean sendMail=false;
public void sendmail(String msg) {
if(sendMail) {
System.out.println(" Mail sent " +msg);
}
在您的 SendMyEmail class 中有一个变量,用于存储您调用函数的时间。然后只需将您的逻辑添加到一个 if 条件中,该条件检查自该方法被调用以来是否已经过了 5 分钟。
您可以在 class 实例化(在构造函数中)时简单地创建一个时间戳。
您的发送方法只检查“自该时间戳后超过 5 分钟”?
如果是:那么取一个新的时间戳,然后发送邮件。
如果否:什么也不做。
这就是您所需要的。这里不提供代码,因为这可能是作业,重点是你学习如何编写相应的代码。
您必须创建我们所说的 Schedule
- 一个持续且定期运行的程序。您的时间表将具有以下逻辑:
@Scheduled(cron = "0 * * * * *") // Will run every minute
public synchronized void sendEmailSchedule() {
Email email = getEmail();
Date lastTimeSent = email.getLastTimeEmailWasSent();
Date now = new Date();
long difference = now.getTime() - lastTimeSent.getTime();
long differenceInMinutes = difference / (60 * 1000) % 60;
if (differenceInMinutes > 5) {
sendEmail(email);
}
}
你所拥有的几乎就是你所需要的。
cron 表达式的意思是,每 5 分钟触发一次:在第 0、5、10 分钟等
public class SendMyEmail
{
private volatile String mailMessage;
public void sendmail(String msg)
{
mailMessage = msg;
}
@Scheduled(cron = "*/5 * * * *")
public void sendmailJob()
{
if (mailMessage != null)
{
System.out.println(" Mail sent " + mailMessage);
mailMessage = null;
}
}
}
我想每 5 分钟发送一封邮件,而不管我在 5 分钟内调用 sendmail() 多少次? 例如
- 如果我在晚上 10 点打电话给 sendmail。应该发送第一封邮件
- 如果我在 10:03 和 10:04 调用 sendmail,则不应发送任何邮件。
- 如果我在 10:06 调用 sendmail,邮件应该被发送,因为不同之处在于
大于 5 分钟
如何实现?
public class SendMyEmail {
private boolean sendMail=false;
public void sendmail(String msg) {
if(sendMail) {
System.out.println(" Mail sent " +msg);
}
在您的 SendMyEmail class 中有一个变量,用于存储您调用函数的时间。然后只需将您的逻辑添加到一个 if 条件中,该条件检查自该方法被调用以来是否已经过了 5 分钟。
您可以在 class 实例化(在构造函数中)时简单地创建一个时间戳。
您的发送方法只检查“自该时间戳后超过 5 分钟”?
如果是:那么取一个新的时间戳,然后发送邮件。
如果否:什么也不做。
这就是您所需要的。这里不提供代码,因为这可能是作业,重点是你学习如何编写相应的代码。
您必须创建我们所说的 Schedule
- 一个持续且定期运行的程序。您的时间表将具有以下逻辑:
@Scheduled(cron = "0 * * * * *") // Will run every minute
public synchronized void sendEmailSchedule() {
Email email = getEmail();
Date lastTimeSent = email.getLastTimeEmailWasSent();
Date now = new Date();
long difference = now.getTime() - lastTimeSent.getTime();
long differenceInMinutes = difference / (60 * 1000) % 60;
if (differenceInMinutes > 5) {
sendEmail(email);
}
}
你所拥有的几乎就是你所需要的。 cron 表达式的意思是,每 5 分钟触发一次:在第 0、5、10 分钟等
public class SendMyEmail
{
private volatile String mailMessage;
public void sendmail(String msg)
{
mailMessage = msg;
}
@Scheduled(cron = "*/5 * * * *")
public void sendmailJob()
{
if (mailMessage != null)
{
System.out.println(" Mail sent " + mailMessage);
mailMessage = null;
}
}
}