проверка завершения выполнения класса в java

#java #multithreading #class-design

#java #многопоточность #класс-дизайн

Вопрос:

Я написал небольшую программу для проверки 3 файлов данных и преобразования их в файл csv.

-Каждый файл преобразуется другим файлом класса

-Существует основной класс, который создает экземпляры всех других классов для обработки файлов один за другим

Как мне убедиться, что следующий файл обрабатывается только после завершения работы с предыдущим файлом?

Псевдокод для моей программы выглядит следующим образом

 mainExecute Class()
{
    executeFile1converter();
    executeFile2Converter();
    executeFile3Converter();
}
  

Комментарии:

1. Выполняются ли executeFile1converter(), executeFile2converter() и executeFile3converter() в отдельных потоках? Если нет, они должны выполняться в указанном вами порядке

Ответ №1:

Если он однопоточный и не возникло исключения / ошибки, то это гарантирует такое поведение

Ответ №2:

Выполнение кода является линейным, если вы сами не вводите параллелизм. Итак, достаточно просто вызывать вещи одну за другой.

Если, конечно, вы не вызываете библиотеки, которые обрабатывают данные асинхронно, но тогда у них должны быть API, которые сообщают вам, когда они завершены.

Ответ №3:

Они будут выполняться в указанном порядке по определению. Одна строка должна завершиться до запуска следующей строки. Кажется, вы говорите об одновременном выполнении, но для этого вам нужны дополнительные явные определения, т.е. executeFile1converter порождает поток. Тогда вам понадобится событие, запускаемое при его завершении.

Ответ №4:

Пока разные файлы классов не запускают потоки для выполнения работы, вам не нужно беспокоиться. По умолчанию используется последовательная работа.

Ответ №5:

Если методы executeFileXConverter() создают новые процессы, достаточно получить код возврата для подпроцесса, чтобы убедиться, что он завершен, прежде чем продолжить, поскольку код возврата недоступен до тех пор, пока подпроцесс не завершит его возврат.