The StringBuffer objects are generally safe to use in a multi-threaded environment where multiple threads may be trying to access the same StringBuffer object at the same time. The StringBuilder is a replacement for the thread-safe StringBuffer class and it works much faster as it has no synchronized methods. If we are doing lots of String operations in a single thread, we can gain a lot of performance when using this class.
Example
public class CompareBuilderwithBufferTest { public static void main(String []args) { stringBufferTest(); stringBuilderTest(); } public static void stringBufferTest() { long startTime = System.nanoTime(); StringBuffer sb = new StringBuffer(); for (int i=0; i < 1000; i++) { sb.append((char) 'a'); } System.out.println("StringBuffer test: " + (System.nanoTime() - startTime)); } public static void stringBuilderTest() { long startTime = System.nanoTime(); StringBuilder sb = new StringBuilder(); for (int i=0; i < 1000; i++) { sb.append((char) 'a'); } System.out.println("StringBuilder test: " + (System.nanoTime() - startTime)); } }
Output
StringBuffer test: 192595 StringBuilder test: 85733