A few reasons:

1. Most other things don't rely on singletons (or have their singletons injected).
2. It gives a false sense of safety.  FastDateFormat is only thread-safe for formatting, not parsing.

To make it safe for parsing you need to:

1. new an instance per usage
2. Synchronize on it
3. Create one per thread (i.e. ThreadLocal)