java事件触发计时器后二十四小时后只执行一次业务逻辑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java事件触发计时器后二十四小时后只执行一次业务逻辑相关的知识,希望对你有一定的参考价值。

先用事件触发计时器,然后计时器二十四小时后执行一个业务逻辑层的方法一次。

java中有个定时任务 java.util.TimerTask

用法很简单

class MyTask extends java.util.TimerTask
@Override
public void run() 
// 这个任何所执行的代码




java.util.Timer timer = new Timer(true); //treu就是守护线程
MyTask task = new MyTask();
//开始执行任务,第一个参数是任务,第二个是延迟时间,第三个是每隔多长时间执行一次
timer.schedule(task, 0 , 1000 * 60 * 60 * 24);追问

我想写一个事件,触发事件后会主动触发计时器,问,触发事件后怎么触发计时器。

追答

java.util.Timer timer = new Timer(true); //treu就是守护线程
MyTask task = new MyTask();
//开始执行任务,第一个参数是任务,第二个是延迟时间,第三个是每隔多长时间执行一次
timer.schedule(task, 0 , 1000 * 60 * 60 * 24);
这几行代码就是开始执行定时器

追问

是不是把触发事件里加一个定时器,每次触发后,定时器就在指点事件执行一次任务,然后关掉

追答

麻烦你看一下,我的注释,每隔多长时间执行一次的,当然你也可以只做一次

追问

我的问题就是只执行一次,已采纳

参考技术A

    事件触发后,计算出需要执行业务逻辑的时间,事件数据放消息队列或者持久化。

    用定时器每分钟(或每小时)检查,根据事件数据判断是否有当前时间需要执行的业务逻辑。有就执行,没有就跳过。

React中事件节流防抖

参考技术A 方法一

方法二

写法类似。。。

debounce 和 throttle 各有特点,在不同的场景要根据需求合理的选择。如果事件触发是高频但是有停顿时,也就是结束后一段时间内触发一次,期间如果再次触发,计时刷新,直到该段时间过后触发,可以选择debounce;在事件连续不断高频触发时,一段时间内最多触发一次,只能选择 throttle ,因为 debounce 可能会导致一段时间内动作只被执行一次,界面出现闪烁。

以上是关于java事件触发计时器后二十四小时后只执行一次业务逻辑的主要内容,如果未能解决你的问题,请参考以下文章

魔兽自带地图编辑器触发事件中的循环函数和周期事件怎么设置啊 求高手指点

QT中的Qtimer 里start(100)开始计时以后,timeout是只触发一次,还是说每到100ms就触发一次??

day03 js基础

防抖和节流

如何从 Timer.Elapsed 事件触发另一个事件?

防抖(debounce)和节流(throttle)