【问题标题】:if a variable's value have not changed for last 24 hours如果变量的值在过去 24 小时内没有改变
【发布时间】:2019-02-22 09:05:14
【问题描述】:

我想在 java 中运行一个向用户发送通知电子邮件的方法。但是如何告诉程序“如果变量的值在过去 24 小时内没有改变,则运行该方法”?

【问题讨论】:

  • 您可以每 15 分钟运行一次 cronjob,检查变量是否已更改。可能有多种解决方案,在谷歌上你肯定会找到一个解决方案。

标签: java email time timing


【解决方案1】:

简单:为此编写代码。你需要什么:

  • 某种“时间感知”数据存储。换句话说:您班级中的普通字段是行不通的。就像,当你有 class Person { String lastName ... ... 直接在 Person 对象的字段上跟踪更改是不可能的。换句话说:您需要编写自己的代码,告诉“更新键 X 的值”......每当发生这种情况时,您都会存储更改的时间戳。最简单的方法:使用存储该时间戳的 setter() 方法。但这个想法无法扩展,并且会导致糟糕的设计。
  • 定期进入并检查这些时间戳的服务,然后做出决定。

并提示:鉴于您的问题非常广泛且不具体,不要指望更具体的答案(甚至代码)会回来。

【讨论】:

    【解决方案2】:

    简短的回答:你不能。您可以做的是保存变量值的副本,并安排定期执行任务,将变量的值与您保存的值进行比较,如果不同则调用方法,然后保存新值。

    更新

    在交换 cmets 之后,我会指出,如果您可以控制对变量的分配(例如,如果该变量有一个 setter,并且您可以更改那个二传手),在这种情况下,我宁愿推荐一个像 GhostCat 发布的解决方案。

    【讨论】:

    • 完全错了。即使您有一个普通的 POJO,您也可以简单地进入并在每次调用 setter 时获取时间戳。
    • @GhostCat 我同意这一点,但他提出问题的简单事实让我认为他不能或不想更改分配给变量的代码。
    猜你喜欢
    • 1970-01-01
    • 2013-04-11
    • 2013-02-24
    • 2015-05-29
    • 2016-07-29
    • 2016-10-08
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    相关资源
    最近更新 更多