Как полностью остановить tomcat, пока у меня есть сокет и поток в нем

#java #multithreading #tomcat

#java #многопоточность #tomcat

Вопрос:

В настоящее время я запускаю некоторые потоки, такие как scheduler и socketserver, такие как mina, через ServletContextListerner. Но после этого tomcat не может быть корректно выключен. Что мне делать, освободить сокет или прервать поток.

 public class ServerListener implements ServletContextListener{
         public void contextDestroyed(ServletContextEvent arg0){
          //what should i do here
         }
         public void contextInitialized(ServletContextEvent arg0){
                   new Thread(new Runnable(){
                         public void run(){
                              SocketMain.main(null);

                         }
                   }).start();
                   new Thread(new Runnable(){
                         public void run(){
                              SccheduleMain.main(null);

                         }
                   }).start();
         }

}
  

Ответ №1:

Прежде всего используйте thread.setDaemon(true) , чтобы сообщить JVM сделать поток потоком демона. Тогда это не предотвратит завершение работы Tomcat.