gpt4 book ai didi

java - 仅当前一个方法已提交时才运行该方法

转载 作者:行者123 更新时间:2023-11-30 03:04:42 24 4
gpt4 key购买 nike

我有一个创建数据库条目的方法。之后,第二个方法读取此数据库条目。

public IfdmJob startIfdmRun(Scenario scenario) throws IfdmConfException {
scenario.valideerVoorIfdm();
try {
IfdmJob ifdmJob = createIfdmJob(scenario); // CREATES A JOB ENTRY IN THE DATABASE
startJob(ifdmJob); // READS THE JOB ENTRY
return ifdmJob;
} catch (Exception e) {
log.error("Failed to start ifdm run", e);
throw new IfdmConfException(IfdmConfException.Message.GENERAL);
}
}

private void startJob(IfdmJob ifdmJob) {
ifdmWorkerService.startJob(ifdmJob);
}

private IfdmJob createIfdmJob(Scenario scenario) throws IOException, InvalidValueException {
removeRunningIfdmJobs(scenario);
IfdmRun ifdmRun = new IfdmRun(scenario);
byte[] zipFile = createIfdmZipFile(ifdmRun);
IfdmJob ifdmJob = new IfdmJob(scenario, zipFile, userService.getLoggedInUser().getUsername());
return entiteitService.create(ifdmJob);
}

我遇到的问题是 createIfdmJob 方法的提交尚未完成,因此 startJob 会查找条目,但找不到它并取消作业。

它们是我可以确保 startjob 方法仅在触发 createIfdmJob 提交时启动的方法吗?

最佳答案

您显然正在使用一堆内部类(例如 IfdmJobIfdmWorkerService)来实现多线程。我们不知道您的内部框架可以做什么和不能做什么,但它们似乎复制了 Java 标准类的功能 RunnableExecutorService .

Java 标准类通过让 ExecutorService.submit(Runnable) 返回 Future 来解决此问题。然后您可以调用 .get() ,它会阻塞直到任务完成。

另一种解决方案是修改 ifdmWorkerService.startJob 以将 Runnable 作为可选的第二个参数,并让它在第一个作业完成时执行该 Runnable。这种模式称为 callback method .

关于java - 仅当前一个方法已提交时才运行该方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35085135/

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