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

Does java `SingleThreadExecutor` guarantee previous work is finished before new one starts?

这是我的代码片段:

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 调用完成后将结果保存在 work 2.
这里的问题是 work 2 必须在 work 1 完成后执行。如果 work 2work 1 完成之前开始,这可能会导致我的应用程序出现异常。

通常调用 API 比 work 1 花费的时间长得多,但我们现在假设 api 调用已经完成,并且 work 1 仍然是 运行。由于 diskIO 是 SingleThreadExecutor,这是否意味着,因为它是单线程,在这种情况下 work 2 必须等到 work 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.

所以在你的情况下 work 2 必须等到 work 1 完成。