public void setQueueSize(int numElem) {
		this.queueSize = numElem;
		if(realSvc != null) {
			ExecutorService previous = realSvc;
            MyThreadFactory threadFactory = new MyThreadFactory(name, isDaemon);
            ArrayBlockingQueue<Runnable> queue = new ArrayBlockingQueue<Runnable>(queueSize);
            ThreadPoolExecutor svc = new ThreadPoolExecutor(maximumPoolSize, maximumPoolSize,
            		keepAliveTime , TimeUnit.MILLISECONDS, queue, threadFactory);
			
			//switching to another executor likes this allows us not to have
			//to synchronize on putting things in the queue...(ie. the execute method)
			realSvc = svc;
			
			//now that the switch has been made, don't allow the one that is going away to 
			//accept any more tasks, BUT allow those tasks to all complete
			previous.shutdown();
		}	
	}