Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations gkittelson on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

(newbie)Need help with trying to implement objects

Status
Not open for further replies.

InfiniteLoop79

Programmer
Mar 1, 2005
2
US
okay, this is very simple and feel like such a idiot asking this, but i have this code, and i need to see how it works......basically i believe i need to create a object of the class workqueue and then execute it..

basically the code is simulating a thread pool


i have tried a few ways to do it but ive been unsuccusfel..have been up for hours, please help!


Code:
import java.util.LinkedList;


public class WorkQueue 
{
    private final int nThreads;
    private final PoolWorker[] threads;
    private final LinkedList queue;

    public WorkQueue(int nThreads)
    {
        this.nThreads = nThreads;
        queue = new LinkedList();
        threads = new PoolWorker[nThreads];

        for (int i=0; i<nThreads; i++) {
            threads[i] = new PoolWorker();
            threads[i].start();
        }
    }

    public void execute(Runnable r) {
        synchronized(queue) {
        	
            queue.addLast(r);
            queue.notify();
        }
    }

    private class PoolWorker extends Thread {
        public void run() {
            Runnable r;

            while (true) {
                synchronized(queue) {
                    while (queue.isEmpty()) {
                        try
                        {
                            queue.wait();
                        }
                        catch (InterruptedException ignored)
                        {
                        }
                    }

                    r = (Runnable) queue.removeFirst();
                }

                // If we don't catch RuntimeException, 
                // the pool could leak threads
                try {
                    r.run();
                }
                catch (RuntimeException e) {
                    // You might want to log something here
                }
            }
        }
    }



	public static void main(String [] args) {
		
		
		
		
		
// what should go here to implement the workqueue class?
	
		
		
		
	}
}
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top