Improving Cleanup of Pool Objects

By changing the availableObjects list from a queue into a stack the timeout on more objects will be hit and unnecessary resources will be cleaned up faster.
For example if the program needs one resource object per second from the pool and the idle timeout is 30 seconds, with a queue data-structure (current code) 30 objects will stay in the pool even though we really need one at any given time, by changing the queue to a stack the same object will be used again and again causing better utilization of the resources and only having around 1 object in the pool.