首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种方法可以在@ Thread.sleep (FixedDelay)块中执行正确的调度?

有没有一种方法可以在@ Thread.sleep (FixedDelay)块中执行正确的调度?
EN

Stack Overflow用户
提问于 2020-09-24 22:30:09
回答 1查看 21关注 0票数 0

我正在尝试在@ Thread.sleep (FixedDelay)块中执行调度,但到目前为止还没有成功。据我所知,Thread.sleep不能在@Scheduled下工作。我可以想到一个while循环,但我对这种方法不是很有信心。你们还有其他的建议吗?

我在这个调度程序下运行多个任务,并且我需要在其中一些任务之间放置一些延迟。不存在将这些任务拆分到多个调度器中的问题。所有的事情都必须在同一个平台下完成。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-09-24 22:41:29

您可以创建原子标志,它将通知线程是否应该休眠。

代码语言:javascript
复制
private static final AtomicBoolean sleep = new AtomicBoolean(false);

@Scheduled(...)
public void schedule() {
    sleep.set(true);
}

public void process() {
    new Thread(() -> {
        while (true) {
            if (sleep.get()) {
                try {
                    Thread.sleep(1000L);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                sleep.set(false);
            }
            
            doSmth();
        }
    }).start();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64048648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档