Текущий сценарий: мой код (скажем, «Вызывающий класс: caller()») будет вызывать метод класса (класс 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();
}
}
Любой хедз-ап будет полезен, независимо от того, возможен он или нет.
Обратите внимание**, что это всего лишь пример, мой исходный код имеет цепочку вызовов методов класса, которая в конечном итоге выполняет метод с помощью ThreadPoolExecutor.
Спасибо Блюдо