komunikacja między wątkami

0

Witam,
W jaki sposób zrealizować komunikację pomiędzy wątkami w Javie? Dokładnie chodzi mi o przekazywanie pewnych danych pomiędzy wątkami. Problem w tym że wątki te oprócz wymiany danych między sobą muszą też otrzymywać dane z procesu który je powołał.

0
public static void exercise5() {
	System.out.println("\n--5--\n");
	try {
		PipedWriter pos = new PipedWriter();
		PrintWriter pw = new PrintWriter(pos);
		PipedReader pis = new PipedReader(pos);
		
		Thread pipedProducer = new ProducerThread(pw);
		Thread pipedConsumer = new ConsumerThread(pis);
		
		pipedProducer.start();
		pipedConsumer.start();
	} catch (Exception e) {
		e.printStackTrace();
	}
	
}


class ProducerThread extends Thread {
	private PrintWriter out;
	private BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
	
	public ProducerThread(PrintWriter out) {
		this.out = out;
	}

	public void run() {
		try {
			String s;
			while (!(s = in.readLine()).equals("END")) {
				out.println(s);
			}
			in.close();
			out.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

class ConsumerThread extends Thread {
	private BufferedReader br;

	public ConsumerThread(PipedReader in) {
		br = new BufferedReader(in);
	}

	public void run() {
		try {
			String s;
			while ((s = br.readLine()) != null) {
				if (s.equals("END")) {
					break;
				} else {
					System.out.println(s);
				}
			}
			br.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

Może się przyda zadanie z zajęć. Jeden wątek przesyła tekst do drugiego, działają dopóki użytkownik nie wpisze END. Bez synchronizacji itp., ale zawsze to coś.

0

jakieś inne propozycje?

0

Do wyboru do koloru:
http://java.sun.com/javase/6/docs/api/java/util/concurrent/package-summary.html

Nie widzę problemu, aby wątki potomne komunikowały się z wątkiem, który je stworzył.
Wystarczy przekazać w konstruktorze wątkom potomnym jakąś strukturę, która umożliwia wymianę danych, np. ArrayBlockingQueue.

1 użytkowników online, w tym zalogowanych: 0, gości: 1