• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Pipe or Stream needed?

 
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi there,
I'm new to all this, so go easy on me
I have a thread (one class) that generates output which I wish to have displayed in a jTextArea component (part of another class). I guess this is a simple producer/consumer type arrangement.
What do I need to link the two so that the thread can "output" to the jTextArea of the other class? A pipe, a stream, a buffer? I can't think straight today, so am hoping to lean on someone's better experience here
Hope you can point me to enlightenment!
Thanks in advance,
gibbsie
 
Bartender
Posts: 9626
16
Mac OS X Linux Windows
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Pipes are usually used for communication between processes. Communication between threads within the same process is simpler because the threads share the same memory space. I've had the "producer"directly invoke the "consumer"'s methods (i.e. append()), or I've used some shared resource, like a queue.
 
Oliver Gibbs
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Cheers Joe for the notes, I think I'm just having a bad day and a complete mind-blocker! I'll have another go in a bit
Thanks again!
gibbsie
 
Ranch Hand
Posts: 2120
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
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.
 
Oliver Gibbs
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Cheers Jose, I'll drink to that
I think yesterday I hit mind-lock (my brain seems to like deadlocks... they happen enough up there!) I've got a clearer head today. I think I just couldn't "see" the light yesterday, ending up totally confusing myself instead!
gibbsie
 
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
reply
    Bookmark Topic Watch Topic
  • New Topic