Java Завершение работы не работает

Я новичок в Java / потоки, и я унаследовал что-то вроде следующего кода. Это программа командной строки, в которой main () запускает только 5-6 потоков различного типа и завершает работу с ^ C. Я хочу добавить хук отключения, чтобы правильно закрыть все потоки и адаптировать его следующим образом.

Я добавил Shutdown крюк и метод stopThread () во всех потоках (как один в классе MyWorker)

Проблема в том, что когда я нажимаю ^ C, я нене видеть сообщение конца из темыметод запуска. Это сделано в фоновом режиме или что-то не так с моим методом. Кроме того, есть ли лучший шаблон, которому я должен следовать?

Спасибо

 public class Main {
     public static MyWorker worker1 = new MyWorker();
     // .. various other threads here

     public static void startThreads() {
         worker1.start();
         // .. start other threads
     }

     public static void stopThreads() {
         worker1.stopThread();
         // .. stop other threads
     }

     public static void main(String[] args)
             throws Exception {

         startThreads();

         // TODO this needs more work (later)

         Runtime.getRuntime().addShutdownHook(new Thread() {
             @Override
             public void run() {
                 try {
                     stopThreads();
                 } catch (Exception exp) {

                 }
             }
         });
     } }

 public class MyWorker extends Thread {
     private volatile boolean stop = false;

     public void stopThread() {
         stop = true;
     }

     public void run() {
         while (!stop) {
             // Do stuff here
         }
         // Print exit message with logger
     } 
}

Ответы на вопрос(5)

Ваш ответ на вопрос