Удаление тем - PullRequest
       79

Удаление тем

0 голосов
/ 23 апреля 2020

Я столкнулся с проблемой удаления или завершения работы некоторых потоков в моей командной строке java приложения. Когда основной метод завершается, некоторые потоки все еще работают с избыточностью.

В следующих строках указаны все запущенные потоки в конце основного метода:

pool-1-thread-5; Is Daemon false;Is Alive true
pool-1-thread-2; Is Daemon false;Is Alive true
AMQP Connection xx.xx.x.xxx:5672; Is Daemon false;Is Alive true
Finalizer; Is Daemon true;Is Alive true
Reference Handler; Is Daemon true;Is Alive true
main; Is Daemon false;Is Alive true
Signal Dispatcher; Is Daemon true;Is Alive true
pool-1-thread-3; Is Daemon false;Is Alive true
pool-1-thread-4; Is Daemon false;Is Alive true

Я не знать происхождение всех потоков пула * и потока AMQP, остальные в порядке, потому что они являются потоками демона и основным потоком

Моя цель - избавиться от потоков пула * и потока AMQP без использования System.exit () и CTRL + C в терминале

Я пробовал следующий метод в конце main:

Thread.getAllStackTraces().keySet().forEach((t) -> {
            if(t.getName().startsWith("pool") || t.getName().startsWith("AMQP"))  {
                t.stop();
                t.destroy();
            }
        });

Но всегда получаю исключение, я пытался использовать только метод stop, только destroy. Подскажите, пожалуйста, как можно отследить источник избыточных потоков или упростить, как я могу их уничтожить

Спасибо

...