ThreadPoolExecutor : 在方法外等待终止

ThreadPoolExecutor : awaiting termination outside the method

当前情况: 我的代码(假设 "Class Caller : caller()")将调用 class (Class ThreadPoolClass : writeData()) 的方法,该方法通过 ThreadPoolExecutor 在内部执行其任务。现在此实现不会等待其所有任务的终止。

问题: 虽然我的代码(方法调用者())需要等到这个(方法 writeData())ThreadPoolExecutor 的所有任务完成。目前控制器在提交任务后返回 caller() 方法。

ThreadPoolClass的实现无法更改,这就是为什么我想弄清楚如何实现它。

//示例代码

class Caller {
    public static void main(String[] args) {
        ThreadPoolClass t = new ThreadPoolClass();
        t.writeData();

        // I want to wait here until the execution is complete
    }
}

class ThreadPoolClass{
    void writeData() {
        Runnable thread = new Runnable() {

            @Override
            public void run() {
                //  Do some database commit operations

            }
        };
        ExecutorService fixedThreadPool = Executors.newFixedThreadPool(1);
        fixedThreadPool.submit(thread);
        fixedThreadPool.shutdown();
    }
}

任何提示都会有所帮助 - 无论是否可行。

注意**这只是一个示例,我的原始代码有一个 class 方法调用链,最终使用 ThreadPoolExecutor 执行该方法。

谢谢 菜品

感谢大家的意见。因此,基于上述评论和我的一些分析,我认为这是无法实现的。总结评论:

除了写一个新的 Class 做同样的事情但有可能 wait/block 或回调。 – 菲尔多

是否可以只复制 "Do some database commit operations" 并在主线程上按顺序执行它们?重用代码很棒,但是 API 使它不可能像现在这样。