В чем разница между классами StringBuffer и StringBuilder в языке Java?
StringBuffer
давно устарел и не рекомендуется к применению. О чём можно найти упоминания в "Effective Java" Джошуа Блоха, "Java Concurrency in Practice" Брайана Гетца и многих других учебниках. Его основное отличие от StringBuilder
в том, что вызов метода append
синхронизирован. В однопоточной среде это приводит к бесполезному замедлению программы. А в многопоточной бесполезно, так как смысл имеет только совместная синхронизация всех вызовов append
, а не каждого по отдельности.
Эти классы похожи, практически двойники, они имеют одинаковые конструкторы, одни и те же методы, которые одинаково используются. Единственное их различие состоит в том, что класс StringBuffer синхронизированный и потокобезопасный. То есть класс StringBuffer удобнее использовать в многопоточных приложениях, где объект данного класса может меняться в различных потоках. Если же речь о многопоточных приложениях не идет, то лучше использовать класс StringBuilder, который не потокобезопасный, но при этом работает быстрее, чем StringBuffer в однопоточных приложениях.
StringBuffer синхронизирован, а StringBuilder - нет.
Соответственно StringBuilder работает быстрее и его следует применять там, где синхронизация (synchronized
) не нужна.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Модификатор volatile гарантирует видимость операций с полем и сохранение их последовательностиВолатильную переменную можно, например, использовать...
Почему completableFuture использует вместо привычного callable supplier, зачем так путать людей привыкших к старому доброму callable?
Собрал в jar проект, который работает с файлами sqlite (выполняется просто запрос "select id from user")На компьютере, где все собирал, все прекрасно работает
Есть InputStream в котором записана последовательность известной длины 32 битных чисел в LittleEndian порядке байт