Commons-Pool provides a generic object pooling interface, a toolkit for creating modular object pools and several general purpose pool implementations.
Do you have a good example, add it here!
Extend the JDK Classes with Jakarta Commons, Part III - Explore Jakarta Commons components that enable you to parse arguments in a command-line application, connect to various file systems at the same time, allow an application to uniformly access configurations loaded from various sources, and pool any object.
Q: If I have multiple threads calling into my method which contains the borrowObject call, do I have to synchronize around this, or are borrowObject and returnObject thread safe?
A: It's implementation dependent. The implementations that come in the official download are thread safe. Of course it is possible this may change in the future if new implementations are added to the package. Be sure to check the JavaDocs.
Q: What is the general purpose of pooling Interfaces ?
A: You don't pool interfaces but objects implementing the interfaces. An object pool is used to reduce the cost of creating/destroying the pooled object (memory,CPU and other resources). Commons-Pool provides several general purpose implementations of different pooling strategies. See also developers guide.