tenho um jogo onde ele cria 2 ou 3 threads, e ao final, eu tenho a opção de reiniciar o jogo, mas pra ficar legal, eu precisaria destruir as threads existentes, como eu faço isso, apenas atribuindo null para cada uma?
Aí pessoal, será que alguém saberia responder esta questão?
tipo, eu acho que o ideal seria destruir a thread, mas se nao for possível, pelo menos chegar se ela já existe e dessa forma não criá-la novamente…
valeu,
Gabriel
M
maluquo1PJ
coloca null, ou simplesmente cria o novo objeto thread com a mesma referência, o objeto que estava sendo referenciado antes não vai mais possuir a referência e vai estar apto pro garbage collector, o que não quer dizer que ele vai ser pego.
G
Gabriel_FilhoPJ
kra, vc poderia explicar melhor, é que sou meio ignorante nesse assunto… se eu simplesmente colocar thread = null, eu estou liberando o processamento dessa thread? tipo, pq depois eu faria Thread t = new Thread(this), ou seja, pelo que eu entendi, se eu atribuir null para t, qndo eu instanciar uma nova Thread irá apontar para o mesmo objeto, é isso?
Não entendi muito bem…
Ex.: do meu codigo:
public final void start(int recordeAtual){
isPlay = true;
continuarJogando = false;
this.recordeAtual = recordeAtual;
t = new Thread(this);
t.start();
}
M
maluquo1PJ
Thread t = new Thread(this); <-- executando este objeto thread
Thread t = new Thread(this); <-- executa este objeto thread, não mais o de cima.
Você está utilizando a mesma referencia pra outro objeto, como o primeiro objeto não pode mais ser acessado por ninguem, porque ele não tem mais referencia então ele deixa de existir. (pode ser coletado pelo gc).