Problema com threads

1 resposta
V

Pessoal,

Tenho uma midlet com vários comandos, entre eles, o especificado abaixo que precisa fazer uma conexão com o servidor, com isso eu preciso criar uma thread para ele fazer essa conexão.

O que está abaixo do t1.start, para executar, antes eu preciso receber uma resposta do servidor se deu tudo certo a conexão e só depois continuar, como poderia fazer isso de modo eficiente?

else if (arg0 == register){
  
  stateControl t1 = new stateControl("teste");				
  t1.setState(stateVerify());
  t1.setRegisterData(nickName.getString(), name.getString(), country.getString(), email.getString());
  t1.start();
 
  try {
    String data1 = nickName.getString();
    openRecStore();
    writeNickName(data1);
    readNickName();
    closeRecStore();
  } catch (Exception e) {
    db(e.toString());
  }

}

Este é o run da thread t1:
stub.createPlayer(this.nickName, this.name, this.country, this.email): retorna true ou false.

public void run() {

  if(getState().equals("Anonimo")) {				
    try{				
      ChessPort_Stub stub = new ChessPort_Stub();	
      stub.createPlayer(this.nickName, this.name, this.country, this.email);
    } catch (RemoteException rse) { 
      rse.printStackTrace(); 
    }			
  }

}

Se precisarem de mais detalhes me avisem.

Obrigado.

1 Resposta

Stryder

Crie algo parecido com um semáforo.
Você terá que criar outra thread, que ficará perguntando pra essa sua thread de conexão se ela já terminou de fazer o que vc quer, depois que essa variável estiver setada(true), você toma a decisão e chama e método posterior. Se entendi o seu problema acho que isso resolve.
Além disso não se esqueça de fazer um TimeOut, pois se a sua Aplicação não tiver uma resposta de tudo ter ocorrido bem dentro um determinado espaço de tempo, você emite a mensagem de erro por TimeOut.

Abraço

Criado 18 de setembro de 2006
Ultima resposta 18 de set. de 2006
Respostas 1
Participantes 2