В чем разница между классами StringBuffer и StringBuilder в языке Java?
StringBuffer давно устарел и не рекомендуется к применению. О чём можно найти упоминания в "Effective Java" Джошуа Блоха, "Java Concurrency in Practice" Брайана Гетца и многих других учебниках. Его основное отличие от StringBuilder в том, что вызов метода append синхронизирован. В однопоточной среде это приводит к бесполезному замедлению программы. А в многопоточной бесполезно, так как смысл имеет только совместная синхронизация всех вызовов append, а не каждого по отдельности.
Эти классы похожи, практически двойники, они имеют одинаковые конструкторы, одни и те же методы, которые одинаково используются. Единственное их различие состоит в том, что класс StringBuffer синхронизированный и потокобезопасный. То есть класс StringBuffer удобнее использовать в многопоточных приложениях, где объект данного класса может меняться в различных потоках. Если же речь о многопоточных приложениях не идет, то лучше использовать класс StringBuilder, который не потокобезопасный, но при этом работает быстрее, чем StringBuffer в однопоточных приложениях.
StringBuffer синхронизирован, а StringBuilder - нет.
Соответственно StringBuilder работает быстрее и его следует применять там, где синхронизация (synchronized) не нужна.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей