I create a TCPServer and pass it a ThreadPool of say minCapacity = 1, maxCapacity = 3. The TCPServer accepts 3 clients so the thread pool shows allocated = 3, used = 3, available = 0. Now I disconnect all 3 clients from the TCPServer. The thread pool still shows allocated = 3, used = 3, available = 0 so I can no longer handle new clients that connect. I tried calling "collect" on the thread pool and it doesn't help. What am I doing wrong?