• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1235
  • Last Modified:

forcing Java to process messages

Hi!
 How would I force my program to look if there are any
 messages waiting in the queue and if any, proccess them.  Something like DoEvents in  VisualBasic or  Application.processMessages in Delphi.
 I.e. I have this loop I want to stop when user clicks the   stop button. Now, no messages are handled while the loop is
 running.
0
brat072297
Asked:
brat072297
  • 2
  • 2
1 Solution
 
msmolyakCommented:
How about design like the following:

public class QueueProcessor {
private Queue theQueue;

public synchrinized Message getMesage() {
   while (theQueue.isEmpty()) {
      try {
         wait();
      } catch (InterruptedException e) {}
   }
   Message msg = theQueue.getMessage();  
   return msg;
}

public synchronized void putMessage(Message msg)
{
  theQueue.putMessage(msg);
  notify();
}
}

Classes Queue and Message are hypothetical classes whose meaning should be clear from the names and context.
0
 
brat072297Author Commented:
I tried the "wait" solution myself, but it doesn't do the job.
I don't want my code to wait for the message.
If there's no "desired" event (not ANY event),  I want it to perform some other actions.
0
 
brat072297Author Commented:
Maybe I wasn't clear enough. I want may app to see if the button
was clicked while the loop is running. If it was clicked then exit the loop otherwise continue. But Java doesn't allow handleEvent method to be called while the loop is running. As I said this was(is) trival in VB and Delphi, but in Java........
0
 
msmolyakCommented:
I still believe that you need at least two therads. If you want the main thread to run while the other thread processes the button click, let it run in a try block with InterruptedException in the catch part. Thus when the button is clicked, you can interrupt the running thread and handle that event in the catch block.

Is that what you are looking for?
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now