Java + spring-以随机间隔无限循环运行动作

时间:2019-01-10 17:55:19

标签: java spring spring-boot

我需要模拟一个实时显示购买情况的小部件。

为了增加统计数据,我想用虚假数据来补充实际购买的数据,这些数据需要随机散发。

所有事件(真实事件和假事件)都进入消息通道并得到处理,然后发送到前端。

所以我需要提供一些我可以控制(运行和停止)的服务

public class FakeDataGenerator {

    private boolean run;
    private Queue queue;

    public void run() {
        run = true;
        while(run) {
            queue.push(generateFakeOne())
            TimeUnit.SECONDS.sleep(ThreadLocalRandom.current().nextInt(1, 30));
        }
    }

    public void stop() {
        run = false;
    }

    private Purchase generateFakeOne() {
        // ... some faking logic
    }
}

generator.stop();

其中generator.run();将开始以随机间隔发出事件,而generator.stop();将允许我随时停止事件

有没有工具可以完成这项任务?我对使用无限循环不满意。

2 个答案:

答案 0 :(得分:1)

如果您使用的是spring-boot,为什么不尝试只使用@Scheduled(fixedDelay = 1000)注释example

示例

@Scheduled(fixedDelay = 1000)
 public void scheduleFixedDelayTask() {
System.out.println(
  "Fixed delay task - " + System.currentTimeMillis() / 1000);
}

答案 1 :(得分:0)

使用一些Spring Executor并给它执行任务。您可以通过执行者参考来控制它