Problema com Thread

Pessoal acontece o seguinte…
eu to fazendo uma thread que conecta com o servidor pra aprovar o login…
essa thread é chamada por um função… e essa função retorna se a pesquisa no banco achou o login ou não…

só que acontece que a função retorna o valor antes da minha thread conectar…

eis o código…

      public void run(){
          try {
            try {
               loginvar= Conect.Get(user.getString(),senha.getString());
              } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
          
         }       
          
        catch (IOException ex) {
            Alert error = new Alert("Erro ao tentar Conectar", "Por Favor, verifique sua conexão.", null, null);
            error.setTimeout(Alert.FOREVER);
            user.setString("");
            senha.setString("");
            midlet.display.setCurrent(error, fmlogin);
        }
          if (loginvar == true){
                
                midlet.display.setCurrent(midlet.Mapa);
            }
            else {
            Alert error = new Alert("Erro ao tentar Logar!!", "Por Favor, verifique se sua senha ou login estão corretos", null, null);
            error.setTimeout(Alert.FOREVER);
            user.setString("");
            senha.setString("");
            midlet.display.setCurrent(error, fmlogin);
            } 
          
      }

Esse código acima é um Thread que chama a função…esta no num arquivo chamado telalogin.java

eis a função que se encontra no arquivo ServerConnection.java

 
    public boolean Get(String user, String pass)  throws IOException, InterruptedException{
             
        boolean ret= false;
        Thread thread = new Thread();
        try{
            urllogin ="http://localhost:8084//conectionServelet/locationbd";
            urllogin = urllogin+"?"+"user="+user+"&"+"pass="+pass;
             thread.start();
            thread.join();
            is = hc.openInputStream();
            ret = loginprocess(hc, is); 
        } finally{
            quit=true;
             System.out.println("Ret no retorno="+ret);
             return ret;
        }
        //  if(ret == false)
        //  showAlerta(ErroMsg);
    }

agora a thread de conexão

 public void run() {
        while(!quit){
            try {
                hc = (HttpConnection) Connector.open(urllogin);
                hc.setRequestMethod(HttpConnection.GET);
            } catch (IOException ex) {
                ex.printStackTrace();
            }
            
        }
    }

Vamos lá… me acompanhe.

Digamos que eu precise fazer uma tarefa que eu não sei fazer, então pessoa pra outra pessoa fazer pra mim e deixo um walkie-talk com ela para que me avise quando terminou. Então aí eu irei buscar o produto da tal tarefa.
Até aqui tudo bem neh?

Então, o que está acontecendo com você é: Vc esta mandando o cara fazer a tarefa, mas não está deixando o walkie-talkie pra ele te avisar que terminou.
O que vc precisa fazer é deixar uma referência da tua classe principal lá dentro da tua classe Thread, para que quando terminar o processamento (fim do método run()), ela chame a tua principal para que então ela processe os dados recebidos da conexão.

Entendeu mais ou menos?
Eu tentei fazer uma analogia para deixar mais simples o entendimento.

Espero que tenha esclarecido algo.

[quote=“clv”]Vamos lá… me acompanhe.

Digamos que eu precise fazer uma tarefa que eu não sei fazer, então pessoa pra outra pessoa fazer pra mim e deixo um walkie-talk com ela para que me avise quando terminou. Então aí eu irei buscar o produto da tal tarefa.
Até aqui tudo bem neh?

Então, o que está acontecendo com você é: Vc esta mandando o cara fazer a tarefa, mas não está deixando o walkie-talkie pra ele te avisar que terminou.
O que vc precisa fazer é deixar uma referência da tua classe principal lá dentro da tua classe Thread, para que quando terminar o processamento (fim do método run()), ela chame a tua principal para que então ela processe os dados recebidos da conexão.

Entendeu mais ou menos?
Eu tentei fazer uma analogia para deixar mais simples o entendimento.

Espero que tenha esclarecido algo.[/quote]

Acho que entendi um pouco… mas… minha classe run() que chama a GET() e essa chama outra Run que roda a conexão… tipo a função get tem retornar para a 1° run, o resultado que a 2° run processou… pq a função get recebe parametros da 1° run…

não consegui aplicar isso… mas entendi que vc quis dizer…

Outra pergunta… posso fazer com que minha thread receba parametros?

Opa,
Eu não entendi o porquê vc tem dois run().
Você pode passar os parâmetros para a classe que implementar Runnable(ou que herda de Thread) através do construtor, gravando esse parâmetros em atributos dessa classe.

é que tipo meus códgos estão em arquivos .java separados… por isso que tem mais de um RUN(), mais só deixei a Thread mesmo pq o outro naum tinha utilidade

Outra coisa… como eu separei meu código, quando eum vo iniciar aparece a lista de todos os arquivos que tenho dai tenho que escolhre o principal… Tem como eu ocultar os outros arquivos para que naum apareçam na lista quando executo o emulador?

Ou terei que jogar todos num arquivo só?

Colega!
Eu faria o seguinte:

new Trhead( new Runnable(){

public void run(){

    //Aqui o teu código
}

} ).start();