gpt4 book ai didi

java - 如何在不使用Thread.sleep的情况下在java中执行定期检查?

转载 作者:行者123 更新时间:2023-12-01 18:45:53 34 4
gpt4 key购买 nike

我有一个程序(线程),它在云上的远程计算机上启动任务。我想监控这个任务的进度,如果超过特定的超时T,那么它将被取消,并且将添加更多的云资源,并且任务将重新开始。

如何监视正在执行此任务的线程?

示例场景:

  1. Timout = 1 小时,任务在 40 分钟内完成,因此一切都应该正常终止。

  2. Timout = 1 小时,由于资源不足,任务在 55 分钟后失败,因此添加更多资源并重新启动任务

  3. Timout = 1 小时,任务在 1 小时后未完成,因此被终止并添加更多资源,然后任务再次启动。

那么如何在java中实现及时监控呢?

最佳答案

您可以将任务提交给 ExecutorService,尝试在超时情况下获取结果,如果超时,则取消任务。

它可能看起来像:

ExecutorService executor = Executors.newFixedThreadPool(1);
Future<?> future = executor.submit(yourTask);
try {
future.get(1, TimeUnit.HOURS);
} catch (TimeoutException e) {
future.cancel(true);
resubmitWithMoreResources();
} catch (ExecutionException e) {
Throwable underlyingCause = e.getCause();
if (underlyingCause instanceof ResourceException) {
resubmitWithMoreResources();
} else {...}
}

关于java - 如何在不使用Thread.sleep的情况下在java中执行定期检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17817294/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com