Я бегу фиксированное количество потоков с использованием newFixedThreadPool()
и должны быть в состоянииКак узнать, какой конкретный runnable умер в моем threadPoolExecutor?
- знаю, когда один из runnables умер, и
- знать, какие именно работоспособной был один, который умер.
Одним из решений для этого было обертывание Runnables как объект Thread и вызов isAlive()
. Потоки выполнялись так, как они должны были, но так как aThread.start()
никогда не вызывал исполнитель, всегда возвращался false
, что бесполезно для меня. Я считал, что запуск Runnables вызывает флаг в начале функции run()
, как и предлагалось this question's answer. Что было бы лучшим способом отслеживать Runnables, которые умерли? Потому что мое намерение состоит в том, чтобы передать исполнителю поток, который по существу будет делать то же самое, что и тот, который умер.
Или эти runnables должны бежать бесконечно? Или это 1 выстрел? –
они работают бесконечно до тех пор, пока исполнитель не вызовет 'shutdown' –
По существу, служба-исполнитель управляет потоками, периодом. Пользователи, управляющие потоками, были проблемой, поскольку были изобретены потоки. Я поддерживаю менеджер потоков и написал эту статью несколько лет назад. Возможно, это может вам помочь: http://coopsoft.com/ar/j2searticle.html – edharned