Issue with wait - notify implementation
I am working on Java multithreading , where I am starting 4 threads after assigning 4 different files to them , to be uploaded to the server.

My objective is , when one thread completes file upload , I need to start another thread assigning a new file to it.

After each file upload , I receive a notification from the server.

// The code for adding the first set of files 

     for (int count = 0; count < 4; count++) {
                    if (it.hasNext()) {
                        File current = new File((String) it.next());
                       
                        try {
                            Thread t = new Thread(this, current );
                            t.start();
                            t.sleep(100);
                        } catch (Exception e) {
                        }
                    }
                }



Now , I am assigning another thread with a file & keeping the thread in a wait state .
When a previous thread notifies , the current thread should start upload.


 

    if (tempThreadCounter == 4 ) {
                   
                    if (it.hasNext()) {
                        File current = new File((String) it.next());
                            try {
                            Thread t = new Thread(this, current);
                            t.start();
    
                            synchronized (this) {
                                t.wait();
                            }
                            tempThreadCounter++;
                        } catch (Exception e) {
                        }
                    }
                }

On the final statement on the run method , I am adding the following statement.

    public void run (){
    
    // Performing different operations
    
    //Final statement of the run method below
    synchronized (this) {
       this.notifyAll();
    }
    }


Currently , all the 5 threads are starting uploading at the same time.
It should be that the first 4 threads should start uploading & the fifth thread should start only when it it notified by any thread that it had completed its operation.

Any suggestions on the incorrect Thread implementation.

 




Issue with wait - notify implementation
===

I am working on Java multithreading , where I am starting 4 threads after assigning 4 different files to them , to be uploaded to the server.

My objective is , when one thread completes file upload , I need to start another thread assigning a new file to it.

After each file upload , I receive a notification from the server.

// The code for adding the first set of files 

     for (int count = 0; count < 4; count++) {
                    if (it.hasNext()) {
                        File current = new File((String) it.next());
                       
                        try {
                            Thread t = new Thread(this, current );
                            t.start();
                            t.sleep(100);
                        } catch (Exception e) {
                        }
                    }
                }



Now , I am assigning another thread with a file & keeping the thread in a wait state .
When a previous thread notifies , the current thread should start upload.


 

    if (tempThreadCounter == 4 ) {
                   
                    if (it.hasNext()) {
                        File current = new File((String) it.next());
                            try {
                            Thread t = new Thread(this, current);
                            t.start();
    
                            synchronized (this) {
                                t.wait();
                            }
                            tempThreadCounter++;
                        } catch (Exception e) {
                        }
                    }
                }

On the final statement on the run method , I am adding the following statement.

    public void run (){
    
    // Performing different operations
    
    //Final statement of the run method below
    synchronized (this) {
       this.notifyAll();
    }
    }


Currently , all the 5 threads are starting uploading at the same time.
It should be that the first 4 threads should start uploading & the fifth thread should start only when it it notified by any thread that it had completed its operation.

Any suggestions on the incorrect Thread implementation.

 



