Продолжаю мучить свою программу. У меня Swing GUI интерфейс, в нем запускаю на выполнение разные задачи в отдельных потоках, все по фэн-шую, потоки фоном выполняются (от мгновения до долгого времени), интерфейс живет и не зависает. Хочу сделать на форме динамически самообновляемый список выполняющихся потоков. Сделал, при запуске новой задачи ее поток добавляется в список. Хочу чтобы при окончании сама удалялась из списка - сделал (нашел на стэковерфлоу десяток вариантов). Хочу чтобы по эскейпу выделенная задача прерывалась - сделал, но при этом она не удаляется из списка, видимо прерывается поток не доходя до конца отладочный принт показывает, что до верхнего уровня вызывающей попытки дело не доходит, видимо прерывается с концами где-то посреди внутренних функций. Хорошо, я могу пытаться добиться, чтобы исключение пробрасывалось до верха и удалять текущую задачу из списка. Но есть деление на 0. Хорошо, отловлю и его, но есть переполнение стека (в яве у меня постоянно) и куча других причин, по которым система прибьет поток, а мне не скажет. Я могу получить список активных потоков в любой момент. Могу повесить это дело на таймер и проверять каждую секунду. Но по-моему это криво и должен быть красивый способ. Как запросить у системы универсальный коллбэк при завершении (любом) любого из моих потоков? Готов согласиться даже на Swing Worker с его ограничением в 10 потоков, если только он это умеет их хорошо и удобно администрировать.