Olá pessoal, eu gostaria de saber se tem alguma maneira de chamar uma Thread ja iniciada, fazer ela começar desde o 0 mais sem quer que instanciar um novo objeto.
No sistema que estou desenvolvendo tem um formulário de cadastro, nesse formulário é realizada uma pesquisa dentro de uma Theread, toda vez que realizo a pesquisa um novo objeto theread é construido, quero usar o que ja existe
Abaixo uma trecho do meu codigo
OBS:
JA TENTEI USAR O Thread.run(); até funciona mais preciso algo que rode em segundo plano e nao trave o GUI !
//VERIFICA SE O OBJETO JA FOI INICIADO
if(ThBuscaCep == null)
{
//CRIA A THREAD
ThBuscaCep = new Thread( )
{
public void run()
{
//CONTEUDO DE BUSCA
}
};
ThBuscaCep.setName("TH-CEP-CadUser"); //NOME DA THREAD
ThBuscaCep.start(); //EXECUTA A THREAD
}
else
{
//AQUI É O QUE NÃO SEI O QUE COLOCAR PARA CHAMAR A THREAD.
}
Thread a = new Thread();
if (!a.isAlive()){ // o Metodo retorna um booleano e caso for falso ...
a.start(); //EXECUTA A THREAD
}else{
/*
se ela já está iniciada creio que nao tem como chamar ela novamente, poderia
fazer o seguinte
a.stop();
a.start();
*/
}
Creio se a Thread já estiver iniciada nao tem como chamar novamente!
Eu entendi, tentei fazer o que voce passou !!
eu o seguinte erro
Exception in thread "AWT-EventQueue-0" java.lang.IllegalThreadStateException
at java.lang.Thread.start(Thread.java:682)
at toneloto.biblioteca.AddUser.actionPerformed(AddUser.java:605)
SE não tem como chamar uma thread novamente, então vou ter que instanciar ela de novo!, mas existe algum problema em ter várias threads rodando ?, pois eu tenho uma para realizar o cadastro, uma para realizar a busca e etc… Eu também ja tentei usar o SwingWorker só que eu tive o mesmo problema !!
Entendi, mais quando uma theread é finalizada, ela simplesmente some ? ou continuar rodando ? e se continua rodando tem como parar ela, remover da memoria ?
Não confunda duas coisas:
Existe a thread, que é a linha de execução de seu programa. Ela não ocupa memória, mesmo quando está rodando.
E existe o objeto da classe thread, que te dá informações sobre a thread que está rodando.
Esse pode ser recolhido pelo garbage collector como qualquer objeto Java existente.