Я новичок в потоковом режиме, и я прошел через много сообщений в переполнении стека и нашел много решений для своей проблемы, но я не уверен, какой из них лучше для какого состояния.Как запустить код, когда все потоки завершены
Первое первых, моя проблема заключается в том, что я хочу, чтобы обновить один JSON файл , когда все потоки выполняются с генерацией растровый по определенному пути так , что я могу получить, что все эти изображения и обновления файла JSON. Итак, в простое слово my Я хочу запустить код, когда весь поток выполняется с ним Выполнение и основное требование заключается в том, что из-за этого я не хочу, чтобы мой главный блокировался.
Что я обнаружил
- нить. присоединиться
- excutorServive
- Android-приоритетов jobQueue (link)
- мьютекса в ThreadPool (также дайте мне знать, если есть другой)
Я смущен, который является лучшим способом борьбы с моя проблема. если есть специалист по андроиду там может подвести итог, что для следующих двух scenerio, что является лучшим в андроиде.
- ждать, пока, когда все нити завершает
- не ждать и получать информацию, когда все завершается
Вы можете быть немного более наглядным в использовании. я не знаю, сколько потоков будет работать. это тоже переменная. поскольку я не знаю, сколько будет растрового поколения. Во-вторых, я хочу, чтобы он полностью независимый модуль из моего приложения. Как узнать, что поток завершен? для этого мне нужно иметь цикл while в одном потоке (исправьте меня, если я ошибаюсь) – RATHI
@RATHI расширяет ответ KgaboL, в тот же момент, когда вы начинаете поток, вы можете увеличить счетчик (установленный в статическом классе, если хотите). Когда поток заканчивается, уменьшите этот счетчик и проверьте, равен ли он нулю. Когда он будет равен нулю, это будет означать, что все потоки исчезли. Вам все равно нужно учитывать, что происходит, когда набор потоков больше не нужен (ленивая загрузка некоторых изображений, которые больше не отображаются на экране, например), например, чтобы убедиться, что окончательное задание не будет выполнено, если вы снова не создадите потоки , или что-то типа того. – Korcholis
@Korcholis благодарит за ответ, что можно использовать для этого подхода, я думаю, чтобы пойти с исполнителем пула потоков. на самом деле я запутался в этом, не хочу снова перейти к другому подходу позже в будущем. – RATHI