Threads comunicando-se por Pipes

0 respostas
laserista

Ae pessoal,

Penei um pouco de trabalho mas consegui ! e resolvi compartilhar caso alguém queira algum dia.

A comunicação entre duas Threads usando Pipes.

import java.io.*;
public class MainPipe{
  public static void main(String args[]){
	ThreadA a;
	ThreadB b;
	try{
		PipedWriter escreveA = new PipedWriter();
		PipedWriter escreveB = new PipedWriter();
		PipedReader leA = new PipedReader(escreveB);
		PipedReader leB = new PipedReader(escreveA);
		a = new ThreadA(escreveA, leA);
		b = new  ThreadB(escreveB, leB);
		a.start();
		b.start();
	}
	catch (IOException e) { 
		System.out.println( e );
	}
  }
}
import java.io.*;
public class ThreadA extends Thread {

	Writer escritorB;
	Reader leitorA;
	String enviandoLinha;
	String recenbendoLinha;

	public ThreadA(Writer e, Reader l){
		escritorB = e;
		leitorA = l;
	}

	public void run() {
		try{
			//----- Escrevendo mensagem para a thread B -----
			BufferedWriter out = new BufferedWriter(escritorB);
			for(int i = 0; i < 3; i++){
				enviandoLinha = "Po thread b recebe ai a msg: "+i;
				out.write(enviandoLinha);
				out.newLine(); 
			}
			out.flush(); 
			out.close();

			//----- Lendo mensagem enviada pela Thread A -----
			BufferedReader in = new BufferedReader(leitorA);
			while((recenbendoLinha = in.readLine()) != null) 
				System.out.println("Eu a thred A jah to lendo as tuas aqui: "+recenbendoLinha);
		   }
		catch ( IOException erro ) {
			System.err.println( erro );
		}
	}
}
import java.io.*;
public class ThreadB extends Thread {

	Writer escritorA;
	Reader leitorB;
	String enviandoLinha;
	String recenbendoLinha;

	public ThreadB(Writer e, Reader l){
		escritorA = e;
		leitorB = l;
	}

	public void run() {
		try{
			//----- Escrevendo mensagem para a thread A -----
			BufferedWriter out = new BufferedWriter(escritorA);
			for(int i = 0; i < 3; i++){
				enviandoLinha = "Mensagem para A nro: "+i;
				out.write(enviandoLinha);
				out.newLine(); 
			}
			out.flush(); 
			out.close();

			//----- Lendo mensagem enviada pela Thread B -----
			BufferedReader in = new BufferedReader(leitorB);
			while((recenbendoLinha = in.readLine()) != null) 
				System.out.println("Leu a linha de B: "+recenbendoLinha);
		   }
		catch ( IOException erro ) {
			System.err.println( erro );
		}
	}
}

Espero que alguém um dia se beneficie !
--------------------------------------------------------------------------
Cassiano Valle Tartari

Criado 7 de junho de 2006
Respostas 0
Participantes 1