Я запустил четыре потока (многопоточность) и назначил задачу для каждого из потоков.Задача для каждого потока заключается в загрузке файла на сервер
Я хочу выполнить следующие функции.
i> Я хочу назначить следующий набор файлов для 4 новых потоковтолько когда все существующие 4 потока завершили свое выполнение.
Как я могу определить, завершили ли все существующие 4 потока выполнение?
Я использовал условие
for (Thread thread : threads) {
if(thread.getState() == Thread.State.TERMINATED || getAlive()) == false){
++ counter ;
}
}
чтобы найти статус темы.
Если значение счетчика становится равным 4, то это означает, что все потоки не активны или не прерваны.
Я получаю уведомление для каждого загружаемого файла.После того, как я обнаружил, что значение счетчика = 4, я снова назначил четыре новых файла для загрузки, используя четыре новых потока.
Может быть ситуация, когда файл не был загружен в первый раз, поэтому мне нужнопереназначить его снова.Я обнаружил, что я переназначаю файл, который уже загружен.Таким образом, его дубликат загрузки.Я назначил файл еще раз, так как я не получил уведомление об успешной загрузке для этого конкретного файла.
Кроме того, возможно, что код, упомянутый выше, не дает надлежащее состояние потоков.Возможно, поток все еще выполнял операцию, когда я переназначил файл для загрузки снова.
Поскольку я использовал четыре потока, counter = 4 означает, что все потоки выполнили свою работу.
Каким должен быть мой подход к решению проблемы?