Các đối tượng StringBuffer thường an toàn để sử dụng trong môi trường đa luồng (multi-threaded) nơi nhiều luồng có thể cố gắng truy cập cùng một đối tượng StringBuffer cùng lúc. StringBuilder là sự thay thế cho lớp StringBuffer an toàn luồng và hoạt động nhanh hơn nhiều vì nó không có các phương thức đồng bộ (synchronized). Nếu chúng ta thực hiện nhiều thao tác chuỗi trong một luồng đơn, chúng ta có thể đạt được hiệu suất tốt hơn đáng kể khi sử dụng lớp này.
Ví dụ
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));
}
}
Kết quả
StringBuffer test: 192595 StringBuilder test: 85733