gpt4 book ai didi

java - java `SingleThreadExecutor` 是否保证前一项工作在新工作开始之前完成?

转载 作者:行者123 更新时间:2023-12-02 00:59:45 26 4
gpt4 key购买 nike

这是我的代码片段:

AppExecutors.getInstance().diskIO().execute(new Runnable() {
@Override
public void run() {
// work 1
}
});

JSONArray apiResponseGet = ApiHelper.getInstance().getData();

if(apiResponseGet == null)
throw new Exception("Api call failed");

AppExecutors.getInstance().diskIO().execute(new Runnable() {
@Override
public void run() {
// work 2
}
});

除了这段代码之外,我要做的是启动 work 1,然后,在执行 work 1 时,向 api 发出请求,并在 api 调用完成后保存它结果工作 2
这里的问题是,work 2 必须在 work 1 完成后执行。如果工作 2工作 1 完成之前开始,这可能会导致我的应用行为异常。

通常,对 API 的调用将比 work 1 花费更长的时间,但我们现在假设 api 调用已完成,并且 work 1 仍在运行。由于diskIO是SingleThreadExecutor,这是否意味着,由于它是单线程,在这种情况下,工作2必须等到工作1完成?
如果答案是否定的,如何确保当 work 2 开始时,work 1 已经完成?

最佳答案

来自SingleThreadExecutor :

Tasks are guaranteed to execute sequentially, and no more than one task will be active at any given time.

因此,在您的情况下,工作 2 必须等到工作 1 完成。

关于java - java `SingleThreadExecutor` 是否保证前一项工作在新工作开始之前完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60812903/

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