Computer >> Máy Tính >  >> Lập trình >> Java

Làm thế nào chúng ta có thể so sánh một StringBuilder với StringBuffer trong Java?

Bộ đệm chuỗi các đối tượng thường an toàn để sử dụng trong môi trường đa luồng trong đó nhiều chuỗi có thể đang cố gắng truy cập vào cùng một StringBuffer đối tượng cùng một lúc. StringBuilder là sự thay thế cho StringBuffe an toàn luồng r và nó hoạt động nhanh hơn nhiều vì nó không có đồng bộ hóa các phương pháp. Nếu chúng tôi đang thực hiện nhiều hoạt động Chuỗi trong một chuỗi duy nhất, chúng tôi có thể đạt được rất nhiều hiệu suất 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));
   }
}

Đầu ra

StringBuffer test: 192595
StringBuilder test: 85733