I am very familiar with the concept of object pooling and I always try to use it as much as possible. 

Additionally I always thought that object pooling is the standard norm as I have observed that Java itself as well as the other frameworks use pooling as much as possible. 

Recently though I read something that was completely new (and counter-intuitive?) to me. 

That pooling actually makes program performance worse especially in concurrent applications, and it is advisable to instantiate `new` objects instead, since in newer JVMs, instantiation of an object is really fast. 

I read this in the book: `Java Concurrency in Practice` 

Now I am starting to think if I am missunderstanding something here since the first part of the book adviced to use `Executors` that reuse `Thread`s instead of creating new instances. 

So has object pooling become deprecated nowadays?