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.
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);
}
}
}