Concorrência

Olá pessoal,

Me deparei com um problema que não sei como resolver, espero que alguém já tenha passado por isso:

Tenho dois métodos, por exemplo:

… Código…
Mostratexto();
ImprimeTexto();

Quando ele é executado nesta ordem, o MostraTexto que era para mostrar um texto não mostra e então quando ImprimeTexto termina mostra direto a mensagem dele e não do MostraTexto primeiro.

Não sei como fazer ele imprimir primeiro e somente depois fazer o que o método ImprimeTexto tem que fazer.

Bom, espero que alguém tenha experiência no assunto.
Obrigado :grin:

Cara desculpa mais não entendi muito bem teu problema,tu poderia especificar melhor?

Bom, vamos dizer que MostraTexto() tem que imprimir um texto e ImprimeTexto() manda imprimir esse texto na IMPRESSORA (esqueci de dizer isso :eek: ). E para mandar imprimir consome um tempo de processamento.

Logo, o texto de MostraTexto() só é mostrado quando ImprimeTexto() imprimir na impressora.

[quote=“Superxis”]Bom, vamos dizer que MostraTexto() tem que imprimir um texto e ImprimeTexto() manda imprimir esse texto na IMPRESSORA (esqueci de dizer isso :eek: ). E para mandar imprimir consome um tempo de processamento.

Logo, o texto de MostraTexto() só é mostrado quando ImprimeTexto() imprimir na impressora.[/quote]

ainda não da de entender bem, o que faz mostraTexto (implementação do método)?
se ali dentro não tiver startando nenhuma thread, pode ter certeza que imprimeTexto só vai executar depois que mostraTexto executar tudo que tem para fazer… isso é sequencial. Você não criou alguma dependencia de mostraTexto para imprimeTexto?! tipo um tributo da classe que é usado em mostraTexto mas só é setado e iniciado em imprimeTexto?! posta os codigos desses métodos ai.

Tudo bem :grin:
Como o código tá grande vou fazer um resumo dele

[code]
private void SaldoCartao() {

jLcd.setText("Conectando, aguarde…");

if(VerificaVarSaldo()) {
try {
ConsultaWS Consulta = new ConsultaWS(); // Faz uma consulta no WebService
Resposta = Consulta.Saldo(this.NumeroCartao,this.Senha);
} catch (Exception ex) {
ex.printStackTrace();
}

        if(Resposta[0].equals("-1")) {
           [...]
        }else{
           jLcd.setText(Resposta[7] + "\nImprimindo...");                    
           Imprimindo.Cupom(Resposta[6]);
        }

}

}[/code]

Bom, eu não chego nem a ver “Conectando, aguarde…”, ele dá um tempinho que é a demora para consultar o webservice e mostra logo o “Transação OK, imprimindo…” neste caso.

Como devo implementar a Thread neste caso?

Não sei se esta é a melhor forma, mas eu consegui o queria colocando isso:

            jLcd.setText("Conectando, aguarde...");
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    SaldoCartao();
                }
            });

Abraços e obrigado :grin: