Oi Wagner,
eu já tentei utilizar threads, porém,
elas não permitem que o fluxo fique preso dentro do método
DigitalizarPonto até que seja clicado. Eu quero prender o fluxo
até que seja possível retornar o ponto para facilitar o uso do
método DigitalizarPonto. Por exemplo:
// Suponha um método onde eu precise
digitalizar o ponto e logo após ele ser digitalizado eu queira
mostrá-lo na tela
// Então o código ficaria
assim:
método mostrar_ponto_clicado
{
Ponto := X.DigitalizarPonto;
Y.Exibir_Na_Tela( Ponto );
}
Assim, se eu usar threads, o
método Exibir_Na_Tela será executado antes que eu
clique.
Obs: já tentei também
utilizar os métodos wait() e notify() da classe object, porém,
para utilizá-los é necessário fazer uso de blocos
sincronizados, o que faz com que a aplicação não execute
outras coisas somente estes blocos.
O código está abaixo. O
método getNumero desta classe deveria retornar somente após
setNumero ser executado, porém, como os blocos estão sincronizados
eu não consigo executar outra coisa na aplicação para
chamar setNumero, como por exemplo no clique de um
botão.
import
java.applet.*;
import java.awt.*;
import java.awt.*;
public class Espera
{
int numero;
boolean setou = false;
Object tmp = new Object();
public int getNumero()
{
synchronized (tmp)
{
try
{ tmp.wait();
}
catch (Exception e)
{ System.out.println ("Erro");
}
}
return numero;
}
{
int numero;
boolean setou = false;
Object tmp = new Object();
public int getNumero()
{
synchronized (tmp)
{
try
{ tmp.wait();
}
catch (Exception e)
{ System.out.println ("Erro");
}
}
return numero;
}
public void
setNumero(int x)
{
synchronized (tmp)
{
numero = x;
tmp.notify();
}
}
{
synchronized (tmp)
{
numero = x;
tmp.notify();
}
}
};
