It’s obsolete in that new code on Java 1.5 should generally use StringBuilder – it’s very rare that you really need to build strings in a thread-safe manner, so why pay the synchronization cost?
I suspect code that you see using StringBuffer mostly falls into buckets of:
- Written before Java 1.5
- Written to maintain compatibility with older JDKs
- Written by people who don’t know about
StringBuilder - Autogenerated by tools which don’t know about
StringBuilder