В приложении с открытым исходным кодом, в котором я участвую, у нас есть ошибка, при которой приложение не всегда закрывается должным образом. Вот что я хотел бы решить.
Опыт показал, что это происходит в большинстве случаев, когда потоки и процессы запускаются, но не управляются правильно (например,грамм. поток ожидает подключения к сокету, приложение закрывается, а поток продолжает ждать).
Имея это в виду, я искал '.start ()' во всем исходном коде и нашел 53 вхождения (что меня немного напугало).
В качестве первого шага я хотел создать вспомогательный класс (ThreadExecutor), в котором текущий код thread.start () был бы заменен на ThreadExecutor.Execute (thread), чтобы иметь) только несколько изменений в существующем исходном коде и б) один класс, в котором я могу легко проверить, какие потоки не заканчиваются должным образом. Для этого я хотел
Таким образом, у меня был бы обновленный список всех выполняющихся потоков, и когда приложение зависает при завершении работы, я мог видеть там, какой поток (-ы) вызывает (-ы) его.
Вопросы:
Просто для пояснения: прежде чем выяснять, как правильно завершить приложение, я спрашиваю здесь, какой лучший / самый простой способ определить, какие потоки являются причиной для определенных тестовых случаев, которые довольно трудно воспроизвести.