Threads e compartilhamento

5 respostas
rogmartins

Bom dia pessoal !
Preciso implementar uma comunicação entre duas Threads.
Uma delas já está feita e fica escutando a porta serial para receber o peso enviado por uma balança.

A outra é uma janela que mostra mensagem de aviso para o usuário e tem um botão cancelar. Esta janela poderá ser fechada de duas formas :

  1. Por cancelamento via botão
  2. Ao receber um peso da balança pela serial
    Para isso, preciso que essas duas threads se comuniquem via notify, sendo que uma fica escutando a porta e a outra fica em wait, mas não sei usar esses métodos.

As duas threads são disparadas por um mesmo objeto, que, por sua vez, é acionado pelo usuário via menu ( opção= “Ler balança”)
Alguem poderia me explicar como implementar isso ?

Segue o método run da thread que escuta a serial :

public void run()
{        
	try 
	{
		      
		if (!portFound) {
			System.out.println("Port not found: "+defaultPort);                
			errorMessage = "Porta de Comunicação " + defaultPort + " não encontrada.";
();

} else {

while ((this.dPeso <= 0) && (this.dialog.isShowing()))

{

Thread.sleep(1000);

}

this.readThread.interrupt();

if (this.dialog.isShowing()) {

this.dialog.setVisible(false);

} else {

this.dPeso = SEM_INFORMACAO;

}

}
} catch (InterruptedException e) {
		System.out.println("Erro :: "+e.getMessage());
		e.printStackTrace();
	}


}

5 Respostas

Metaleiro

[color=darkblue] Você tem que sincronizar as duas Threads pode fazer isso usando Wait ou Notify ou usando o synchronized :[/color]

http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/threads/sincronizacao.html

luistiagos

use synchronized que é mais garantido…

luistiagos

de qualquer modo para usar wait e notyfi vc precisara inserilos em um contexto synchonized

nbluis

Utilize blocos sincronizados.

ViniGodoy

Dê uma lida neste tópico que explica como usar o wait e o notifyAll, com exemplos:
http://www.guj.com.br/posts/list/53187.java#279817

Criado 25 de maio de 2007
Ultima resposta 25 de mai. de 2007
Respostas 5
Participantes 5