У меня есть многопоточный проект java, и я хочу добавить метод stop(), чтобы остановить все запущенные потоки. Проблема в том, что этот проект разрабатывается кем-то другим, и я не знаком с тем, как он реализует несколько потоков.
Я знаю, что после начала проекта запускается много потоков, и они запускаются вечно. Есть ли способ найти все запущенные потоки и остановить их? Я много искал и нашел, как получить список запущенных потоков:
Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
Что делать дальше, чтобы остановить все текущие потоки?
Причина, по которой я хочу остановить эти потоки, заключается в том, что мне нужно развернуть этот проект в контейнер OSGi в виде пакета. Как только пакет запущен, несколько потоков выполняются вечно. Поэтому мне нужно реализовать метод destroy(), чтобы остановить все потоки для управления жизненным циклом пучка.
Как насчет
for (Thread t : Thread.getAllStackTraces().keySet())
{ if (t.getState()==Thread.State.RUNNABLE)
t.interrupt();
}
for (Thread t : Thread.getAllStackTraces().keySet())
{ if (t.getState()==Thread.State.RUNNABLE)
t.stop();
}