栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如果Spring Scheduled执行在某个固定时间后挂起,则停止

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如果Spring Scheduled执行在某个固定时间后挂起,则停止

我不确定这是否会按预期工作。实际上,keepAlive是用于IDLE线程的,并且我不知道您等待资源的线程是否在IDLE中。此外,仅当线程数大于内核数时,除非监视线程池,否则您无法真正知道何时发生。

keepAliveTime-当线程数大于内核数时,这是多余的空闲线程将在终止之前等待新任务的最长时间。

您可以执行以下操作:

public class MyTask {    private final long timeout;    public MyTask(long timeout) {        this.timeout = timeout;    }    @Scheduled(cron = "")    public void cronTask() {        Future<Object> result = doSomething();        result.get(timeout, TimeUnit.MILLISECONDS);    }    @Async    Future<Object> doSomething() {        //what i should do        //get ressources etc...    }}

不要忘记添加

@EnableAsync

无需

@Async
实现Callable 也可以执行相同的操作。

编辑:请记住,它将等待直到超时,但是运行任务的线程不会被中断。发生TimeoutException时,您将需要调用Future.cancel。并在任务中检查isInterrupted()以停止处理。如果要调用api,请确保已选中isInterrupted()。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/497044.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号