Vc recria o objeto que tem a thread ou simplesmente tenta restartar ela?
L
lounaticoPJ
então, teoricamente recrio, porque to usando resource…
ae não tenho certeza de como ele reage…
na primeira vez, o status da minha thread está new, mas na segunda, mesmo antes de dar o start ela tá terminated…
não sei bem porque… =/
abraço!
B
BrunoCarloPJ
Simples,
vc não tá recriando o objeto, vc tá reiniciando a thread, e isto não pode, pois uma thread morta é uma thread morta… não rola de ressuscita-la,
olha o exemplo:
publicclassExemplo{staticintx=0;publicstaticvoidmain(String[]args){Threadthread=newThread(){publicvoidrun(){System.out.println("count da thread = "+(x++));}};thread.start();try{Thread.sleep(1000);}catch(InterruptedExceptione){e.printStackTrace();}thread.start();// erro...}}
Agora a qye não dá erro:
publicclassExemplo{staticintx=0;publicstaticvoidmain(String[]args){Threadthread=newThread(){publicvoidrun(){System.out.println("count da thread = "+(x++));}};thread.start();try{Thread.sleep(1000);}catch(InterruptedExceptione){e.printStackTrace();}thread=newThread(){publicvoidrun(){System.out.println("count da thread = "+(x++));}};thread.start();// ok}}
Sacou o seu problema??? vc tem que reinstanciar o objeto que é a thread…
L
lounaticoPJ
poutz cara… mas eu estou fazendo isso… ou pelo menos tentando… =P
segue o código…
ContextinitCtx=newInitialContext();ContextenvCtx=(Context)initCtx.lookup("java:comp/env");EnviaEmailThreadmail=(EnviaEmailThread)envCtx.lookup("mail/EnviaEmail");mail.setEmail("xx","xx","Subject","Message");/*aqui, na primeira aparece NEW, e na segunda TERMINATED*/System.err.println("State>>"+mail.getState());mail.start();
me dê uma mãozinha ae rapazz…
um abraço!
B
BrunoCarloPJ
Ola,
Este teu ejb é uma thread ou ele istancia uma thread?
pq a pergunta, vc pode fazer o trabalho da thread, que acho que é o que tá acontecendo, ou vc pode mandar a thread fazer pra vc…
O problema é que, a sua classe, ou que implemente, EnviaEmailThread estende de Thread, pode falar, se eu tiver falando m&%$@#… então quando vc invoca o lookup, o servidor cria uma istancia dela lá, no servidor, e a primeira vez funciona legal… na segunda… a classe já foi instanciada, então ela nãoi instancia denovo… sacou o problema aqui??? a thread já morreu…
L
lounaticoPJ
ahhhh deve ser isso mesmoo!!
então eu deveria fazer esse meu lookup retornar uma outra classe, e de um método start() dela, por exemplo, eu instancio e aciono a Thread do e-mail??!