Olá a todos,
pessoal estou fazendo alguns testes iniciais com Threads, mas estou obtendo alguns resultados diferentes do que eu esperava. Tenho uma classe principal (com o método main) que na sua execução, instancia uma classe TesteThread que implementa Runnable.
A classe TesteThread tem uma propriedade String chamada txtDigit. O método run fica em loop infinito enquanto esta propriedade for diferente de zero (!txtDigit.equals("0")), dentro do loop, a propriedade recebe do teclado caracteres conforme sejam digitados.
A classe principal também fica em loop infinito pelo mesmo teste.
Acontece que na execução, a saída mostra o caractere inicializado na classe principal. Se você experimentar digitar algo no teclado, o caractere será mostrado uma vez só, ao invés de mudar de valor a partir de então.
Abaixo vai a implementação de cada classe. Alguém sabe explicar pq isso acontece?
import java.util.*;
import java.io.*;
import java.text.*;class Keyboard
{
static private BufferedReader reader = new BufferedReader( new InputStreamReader( System.in ) );public static String readString()
{
try
{
return Character.toString((Character.forDigit(reader.read(), Character.MAX_RADIX)));
}
catch ( Exception e )
{
System.out.println("Erro!");
return "";
}
}
}------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
public class TesteThread implements Runnable
{
String txtDigit;
TesteThread(String letra)
{
this.txtDigit = letra;
}
public void run()
{
while (!txtDigit.equals("0"))
{
this.txtDigit = Keyboard.readString();
}
}public String getTxtDigit()
{
return txtDigit;
}
}------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
public class Principal
{
public static void main(String args[])
{
TesteThread t = new TesteThread("x");
new Thread(t).start();
while (! t.getTxtDigit().equals("0"))
{
System.out.print(t.getTxtDigit());
}
}
}Muito Obrigado,
Júlio.
Busca Yahoo!
O serviço de busca mais completo da Internet. O que você pensar o Yahoo! encontra.