【发布时间】:2014-09-18 06:17:45
【问题描述】:
我有下面的方法,每分钟从后台线程调用一次。
在我下面的代码中,如果我的unauthorizedCount 不等于零,那么我会发送一封电子邮件。
private void callMetrics() {
// .. some other code
// send an email for unauthorized count
if (Integer.parseInt(unauthorizedCount) != 0) {
// send an email here
}
}
现在,如果我的unauthorizedCount 不为零,那么它至少会在一个小时内不为零,所以这意味着它将继续每 1 分钟发送一封电子邮件,持续一个小时,因此我们的电子邮件将被此信息淹没电子邮件,这就是我不想要的。
现在我想要做的是 - 只要unauthorizedCount 不为零,它就会发送第一封电子邮件,但是我不想在下一分钟发送另一封电子邮件,因为我的后台线程每 1 运行一次分钟,我想半小时后再发出。所以基本上我想在未授权计数非零时发送我的第一封电子邮件,但如果在下一分钟再次非零,那么我不想发送另一封电子邮件,如果unauthorizedCount 非零,我将发送另一封电子邮件半小时后归零。
我怎样才能做到这一点?我应该在这里使用一些乘数吗?
【问题讨论】:
-
保留
lastSent时间并在发送前检查? -
我明白了,你能提供一个例子来说明我将如何实现这一目标吗?