Fechando Classes

Fala aeh Pessoal :smiley:

Eu estou com uma duvida, eu criei uma instancia de um .class bom pra exemplificar vo colocar ele aqui

[quote]Cliente nCliente = new Cliente(Integer.parseInt(txtPorta.getText()),
txtIp.getText());[/quote]

Só que eu tenho um botão que deveria parar uma operação que ocorre dentro desse nCliente… bom, eh um looping de While( true) que fica rodando na instancia de nCliente…

Eu queria parar a execução do nCliente, matar ele… e fiquei curioso em saber se existe algum comando estilo nCliente.close() (nem achei ) ou algo relativo, para matar a instancia , existe algo do genero ?

Não seria apenas setar a referencia para nulo ?

nCliente = null;

e thau objeto !

se vc não quiser perder seu objeto vc poderia cria o metodo close (), onde vc implementaria alguma coisa que para-se o loop, por exemplo:


class minhaClasse{
  private boolean loop;


  public void iniciarLoop()
 {
     this.loop = true;
     while(loop) System.out.prinln("loop");
  }

  public void stopLoop()
 {    
    this.loop = false;
 }

  }

mas acho ki isso não funcionaria sem o uso de thread !

Nunca vi nada assim pronto… Quando eu preciso parar a execução de um loop através do evento de um botão por exemplo, eu uso uma variável booleana como flag… O evneto do botão altera o estado desta flag…

tipo

private boolean flag;

quando o processo é disparado:

flag = true
boolean flag = true;

for(int i = 0; i < 100 && flag; i++){
   //faça qualquer coisa
}

e o evento do botão qualquer coisa do tipo

flag = false;

Abraço!

[quote=pm]Não seria apenas setar a referencia para nulo ?

nCliente = null;

e thau objeto !

se vc não quiser perder seu objeto vc poderia cria o metodo close (), onde vc implementaria alguma coisa que para-se o loop, por exemplo:


class minhaClasse{
  private boolean loop;


  public void iniciarLoop()
 {
     this.loop = true;
     while(loop) System.out.prinln("loop");
  }

  public void stopLoop()
 {    
    this.loop = false;
 }

  }

mas acho ki isso não funcionaria sem o uso de thread ![/quote]

Ah sim, provavelmente tem que por thread, porque senão a GUI pára e ele não vai cosneguir clicar no botão para parar a ação… :slight_smile:

Opa valeu Pessoal,

Eu já etava usando pequenas funções para setar a flag boolean para false, a minha curiosidade era mesmo para MATAR de vez todo o processamento e existencia da variavel do processamento, a ideia de setar ela pra null eu nem cheguei a ter, vou dar uma testada aqui… sibem que fazer isso me parece meio gambiarra, mas como eu ainda so novo no Java, ta mais doque bão pra min ehehe

Valeu pelos comentários

Num é gambiarra não…!!
Isso cai no exame de certificação !!!

tipo…quando vc seta uma referencia para null, vc esta tornando o objeto legivel para o garbageCollector.

Esse “Cliente” é uma thread?
Se sim pode usar metódos para interromper o funcionamento dela.