Hallo, all literature about concurrent proagramming says: never use wait without a loop. Another Thread can call Thread.interrupt(), so it can happen you that you are trying to dequeue a message from an empty queue. The code should go like this (without the need for synchronized en/dequeue methods):
/** Thread that sends all message to the clients */ public void run() { Message message; synchronized(queue){ while (queue.size() == 0) { try { // gives up the lock, // reaquires it on return queue.wait(); } catch(InterruptedException ie) { // possibly terminate if (globalTeminateFlag) return; // else see if we got a message } } message = queue.dequeue(); } proccessMessage(message); } public void sendToClients(Message message) { synchronized(queue){ queue.enqueue(message); queue.notifyAll(); } } Cheers, Ole. Hubinette Per <[EMAIL PROTECTED]> writes: > This is the way to go I think but you need to wait and notify on the queue as well >as have synchronized blocks. > Be sure that your queue is thread safe (Vector or some synchronized Set,Map). Don't >use thread priority this is not well specified for the JVM. You don't have any >control over how the thread priority will work. > > /** Thread that sends all message to the clients */ > public void run() { > > if(queue.size() == 0) { > synchronized(queue){ > try{ > queue.wait(); > } > catch(InterruptedException ie){} > } > } > message = queue.dequeue(); > proccessMessage(message); > } > > public void sendToClients(Message message) { > queue.enqueue(message); > synchronized(queue){ > queue.notifyAll(); > } > } > > -Per Cheers -- Predestination was doomed from the start. =========================================================================== To unsubscribe, send email to [EMAIL PROTECTED] and include in the body of the message "signoff JAVA3D-INTEREST". For general help, send email to [EMAIL PROTECTED] and include in the body of the message "help".