Whether or not it will pay in performance to
1. create a single utility object and synchronize access to it
2. create a new utility object every time a request needs one
3. have a pool of utility objects
depends entirely on what the objects have to do - you just can't generalize and say one method is always best.
Object creation and GC is really quite fast in modern
Java JVMs, especially if you do a little optimization of settings.
We see a pool of DB connection objects used frequently because creating a DB connection is expensive.
So my advice is - don't get all tangled up with trying to optimize when you don't even have any idea what is really consuming time in your particular application.
Bill