use NotifyAll() method. Regards, Sunil
On Sat, Dec 11, 2010 at 8:46 PM, anthony <anthonysvalen...@gmail.com> wrote: > I am trying to send a notify to an available Thread (first Thread i > can find in a pool currently in a WAITING state), but am unable to. I > am trying to send the notify alert to a thread running in a separate > class, although this class is included in the same package. Here is > the Server.java file from which I am trying to notify my available > thread: > > ***************Server.java*********************** > package dir.test; > > > import java.util.ArrayList; > import java.util.LinkedList; > > public class Server { > static private final int THREADCOUNT=5; > > > public static void main(String[] args) throws InterruptedException { > ArrayList<Thread> objThreads = new > ArrayList<Thread>(THREADCOUNT); > > for (int i=0; i<THREADCOUNT; i++) { > objThreads.add(i, new Thread(new ObjThread(1))); > objThreads.get(i).start(); > } > > try { > for (int i=0; i<objThreads.size(); i++) { > if ( > (objThreads.get(i).getState())==Thread.State.WAITING ) { > System.out.println("Thread " + i + " > is in state: WAITING."); > objThreads.get(i).notify(); > System.out.println("Thread " + i + " > has been notified."); > } > } > } catch (Exception e) { > e.printStackTrace(); > } catch (Throwable t) { > System.err.println("Caught throwable t: " + t); > } > } > } > ********************************************** > > and here's the ObjThread.java file... > > ***************ObjThread.java*********************** > package dir.test; > > import java.lang.Runnable; > import java.util.*; > > > public class ObjThread implements Runnable { > private int int_var; > > public ObjThread(int int_var) { > this.int_var = int_var; > } > > public synchronized void run() { > while ( true ) { > try { > System.out.println("test...before wait"); > wait(); > System.out.println("test...after wait. int > variable value: " + > int_var); > } catch ( InterruptedException e ) { } > } > } > } > ********************************************** > > > The thread never gets to the statement: > System.out.println("test...after wait. int variable value: " + > int_var); > > My output is: > $ java dir.test.Server > test...before wait > test...before wait > test...before wait > test...before wait > test...before wait > Thread 0 is in state: WAITING. > java.lang.IllegalMonitorStateException > at java.lang.Object.notify(Native Method) > at cscie160.test.Server.main(Server.java:23) > > > Any idea how I can wake a thread from a WAITING state with this file > structure so it can resume it's work? > > -- > You received this message because you are subscribed to the Google > Groups "Java EE (J2EE) Programming with Passion!" group. > To post to this group, send email to > java-ee-j2ee-programming-with-passion@googlegroups.com > To unsubscribe from this group, send email to > java-ee-j2ee-programming-with-passion+unsubscr...@googlegroups.com<java-ee-j2ee-programming-with-passion%2bunsubscr...@googlegroups.com> > For more options, visit this group at > > http://groups.google.com/group/java-ee-j2ee-programming-with-passion?hl=en?hl=en -- You received this message because you are subscribed to the Google Groups "Java EE (J2EE) Programming with Passion!" group. To post to this group, send email to java-ee-j2ee-programming-with-passion@googlegroups.com To unsubscribe from this group, send email to java-ee-j2ee-programming-with-passion+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/java-ee-j2ee-programming-with-passion?hl=en?hl=en