Servlet e Thread

Pessoal estou com a seguinte dúvida, se um servlet cria uma instância de uma classe que estende a Thread e executa o start().

Pergunta, se o container resolver retirar o servlet de serviço e a thread ainda não tiver terminado o seu processamento, ela continua até o fim?

Obrigado

Depende…

Se o teu thread for daemon ( setDaemon(true) ), entao a aplicacao termina assim que receber o sinal, caso contrario o servidor vai ficar pendurado ate o thread finalizar.

Rafael

Muito interessante sua pergunta. Realmente nunca tinha imaginado no que aconteceria aos servlets quando este eh indisponibilizado, por exemplo, dando um undeploy de uma aplicacao no container. Matar a thread seria meio sacanagem, e resolvi testar.
Criei um servletzinho, com um loop infinito, que imprimia no System.out numeros incrementais. Fiz deploy da aplicacao no JBoss(Tomcat) e invoquei o servlet pelo browser. Ele comecou a contar como esperado.
Realizei um undeploy da aplicacao e o jboss informou isto:

Como meu laco era infinito, essa instacia que estava esperando ser desalocada ( e que continuou rodando mesmo apos o undeploy) nunca terminava. Tive que reestartar o container.

Ou seja, as threads que ja estao executando um servlet nao param com a indisponibilizacao desse, porem, novas threads nao fazem uso desse sevlet nao.

pessoal estou com um problema quando minha aplicacao que chama o thread termina esta matando a thread junto, preciso que o programa rode como ose fosse um serviço
da uma olhada nos arquivos :


public class Serverinit {

   public static void main(String[] args) {
   Thread thread = new Server();
       thread.setDaemon(true);
       thread.start();   
   }

} 

e a thread:


import java.net.*;

public class Server extends Thread
{
        private ServerSocket s;
        private Socket client;
        private Connection c;

        Server(){
           //setDaemon(true);
        }
           
        public void run()
        {
           
                try
                {
                        s=new ServerSocket(5155);
                }
                catch (java.io.IOException e)
            {
                        System.out.println(e);
                        System.exit(1);
                }
                System.out.println("servidor escutando");
                try
                {
                        while (true)
                        {
                              client = s.accept();
                                c = new Connection(client);
                                c.start();
                               
                        }
                }
                catch (java.io.IOException e)
                {
                        System.out.println(e);
                }
        }
       
} 

bom se alguem puder me ajudar !!!

Então deixe o “setDaemon( false )”

flw