package com.tivoli.jmx.tutorial.server; import java.util.Iterator; import java.util.HashSet; public class HandlerPool { private java.util.Set handlers; private int size; public HandlerPool() { this.handlers = new HashSet(); this.size = 8; fill(); } public HandlerPool(int size) { this.size = size; fill(); } private void fill() { for (int i = 0; i < this.size; i++) { Handler h = new Handler(this); h.start(); handlers.add(h); } } public void release(Handler handler) { synchronized (handlers) { handlers.add(handler); handlers.notify(); } } public Handler reserve() { Handler h = null; synchronized (handlers) { while (handlers.isEmpty()) { try { handlers.wait(); } catch (InterruptedException x) {} } Iterator i = handlers.iterator(); h = (Handler) i.next(); handlers.remove(h); } return h; } }