About Oleg Varaksin
Object pools are containers which contain a specified amount of objects. When an object is taken from the pool, it is not available in the pool until it is put back. Objects in the pool have a lifecycle: creation, validation, destroying, etc. A pool helps to manage available resources in a better way. There are many using examples. Especially in application servers there are data source pools, thread pools, etc. Pools should be used in cases such as:
- High-frequency using of the same objects
- Objects are very big and consume much memory
- Objects need much time for initialization
- Objects use massive IO operations (Streams, Sockets, DB, etc.)
- Objects are not thread-safe
Source : http://www.javacodegeeks.com/2013/08/simple-and-lightweight-pool-implementation.html