Warning: To avoid potential deadlock

Pessoal preciso de uma ajuda qui com THREAD, ja pesquisei no forum mas só acha que tem que usar THREAD, mas nao tem nada de exemplo e confesso que achei meio confuso o que encontrei.

Seguinte, quando executa a linha 52, que faz a conexao com a rede para enviar, trava o emulador e da esse erro:

Warning: To avoid potential deadlock, operations that may block, such as
networking, should be performed in a different thread than the
commandAction() handler.

Ai que vem a ajuda, procurando no forum todos dizem: Implementa com uma nova thread, mas nao encontrei exemplos disso, onde e como seria essa thread neste codigo? Se alguem puder me ajudar agradeceria muito, pois sou novato em java, mas preciso fazer essa aplicacaozinha rodar.

[code]import javax.microedition.midlet.;
import javax.microedition.lcdui.
;
import java.io.;
import javax.microedition.io.
;

public class Connec extends MIDlet implements CommandListener{

private Display display;
private Form tela;
private TextField tflat;
private TextField tflon;
private Command cmdEnviar;
private Command cmdReceber;


public void startApp(){
    
    display = Display.getDisplay( this );
    montarTelaInicial();
    display.setCurrent( tela );
}

public void pauseApp(){
    // metodo para pausar aplicacao
}

public void destroyApp( boolean b ){
    display.setCurrent( null );
    this.notifyDestroyed();
}

private void montarTelaInicial(){
    
    tela = new Form( "HTTP Sender" );
    tflat = new TextField( "Lat :", null, 10, TextField.DECIMAL );
    tflon = new TextField( "Lon :", null, 10, TextField.DECIMAL );
    
    cmdEnviar = new Command( "Enviar", Command.ITEM, 0);
    cmdReceber = new Command( "Receber", Command.ITEM,0);
    
    tela.append( tflat );
    tela.append( tflon );
    
    tela.addCommand( cmdEnviar );
    tela.addCommand( cmdReceber );
    tela.setCommandListener( this );
    
}

public void commandAction( Command c, Displayable d ){
    
    if ( c == cmdEnviar ){
        passarInformacaoServidor();
        
    }else if ( c == cmdReceber ){
          System.out.println("Não funcional!");
    }  

}
          

private void passarInformacaoServidor(){
       
    try {
                    
        HttpConnection con = (HttpConnection)Connector.open("http://www.site.com.br/gps/requestpos.asp?lat=12345&lon=9999"); 
        
        int status = -1;
        
        String situacao = "";
                 
        situacao = ( status != HttpConnection.HTTP_OK?"Erro : Conexao":"OK" );
        
        montarTelaInicial();
        tela.append( situacao );
        display.setCurrent( tela );
        
    }catch (IOException e) {
         System.out.println("IOException " + e.toString());
    }
    }

}[/code]

Cara já tive o mesmo problema, tu tens que fazer a parte que conecta no http rodar em um thread separada.

Silveta, o que voce disse, ja achei em todas as respostas do forum, o que eu nao consigo colocar é essa implementacao, sempre da erro, e notei que em todas as respostas ninguem posta um exemplo, apenas diz ja resolvi o problema. Venho de anos de programacao windows, e nos foruns quando temos duvidas sempre pegamos o codigo do cara que tem o problema, e postamos pelo menos parte ou indicamos um exemplo de como fazer, o que tenho notado que no forum de Java nao acontece muito… rsrs

Sei que ninguem é obrigado a fazer isso, mas ajudaria muita gente, inclusive os posts em aberto.

Tu poderias me ajudar nessa implementacao?

grato

final Thread th = new Thread() {

			@Override
			public void run() {
				try {

					HttpConnection con = (HttpConnection) Connector
							.open("http://www.site.com.br/gps/requestpos.asp?lat=12345&lon=9999");

					int status = -1;

					String situacao = "";

					situacao = (status != HttpConnection.HTTP_OK ? "Erro : Conexao" : "OK");

					montarTelaInicial();
					tela.append(situacao);
					display.setCurrent(tela);

				} catch (IOException e) {
					System.out.println("IOException " + e.toString());
				}
			}
		};

dai para rodar basta “th.start();”

e quanto ao sua comparação de foruns entre java e outras linguagens, creio que o programador java deve ser ensinando a pescar não receber o peixe.

[]'s

Silveta valeu pela ajuda, eu ja havia conseguido, mas acho que me expressei mal no comentario quanto a comparacao, nesses mais de 10 anos de desenvolvimento, jamais fiz um curso sequer, sempre “pesquei meu peixe”, conforme tu disse, concordo que tem muita gente que quer tudo mastigado, eu comecei a desenvolver ( se posso dizer assim ) faz 2 semanas, por necessidade mesmo, vi coisas em Java, que em bibliotecas Ruindows ( como costumo dizer ), seria dificil e demorado de desenvolver. Confesso que to me surpreendendo com a linguagem e pretendo adotá-la daqui para frente. O que falta é realmente entender algumas coisas, que com o decorrer da pescaria ira superar os meus conhecimentos em plataformas ruindows.

PS.: Estou complementando o codigo e posto o codigo aqui.

grato