Welcome to the Ranch Oliver!
A stream would be adecuate if the origin and sink of information would be in different
java virtual machines.
A pipe is used if both the origin and sink are active object, they have its own thread of execution. The textarea does not qualify.
Solution: give visibility to the two classes. That is, provide the "producer" with a reference to the "consumer". And write a method in the "consumer" to add the message to the textarea. Funnily you do not need either a pipe or a stream, but a thread. However not any thread, because the textarea is likely to be shown, you can only modify its state from within the event-dispatching thread. Read the API for SwingUtilies.invokeLater for doing that.
Also this not a producer comsumer scenario. There should be a necessity to synchronize the rate at which both the producer and the consumer perform for being considered as that. Tipically the producer cannot produce a second item untill is notified by the consumer that it has already consumed the first one. And the consumer cannot consume again untill is notified by the producer that a new item is available. Otherwise could consume twice the same item.