Java String - Sự khác nhau giữa StringBuffer và StringBuilder

Sự khác nhau giữa StringBuffer và StringBuilder trong java

Sự khác nhau giữa StringBuffer và StringBuilder trong java

Sự khác nhau giữa StringBuffer và StringBuilder trong java được thể hiện trong bảng sau:

No. StringBuffer StringBuilder
1) StringBuffer là đồng bộ (synchronized) tức là luồng an toàn. Điều này có nghĩa là không thể có 2 luồng cùng truy cập phương thức của lớp StringBuffer đồng thời. StringBuilder là không đồng bộ (non-synchronized) tức là luồng không an toàn. Điều này có nghĩa là có 2 luồng cùng truy cập phương thức của lớp StringBuilder đồng thời.
2) StringBuffer không hiệu quả bằng StringBuilder. StringBuilder hiệu quả hơn StringBuffer.

Ví dụ về StringBuffer trong java

public class BufferTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		StringBuffer buffer = new StringBuffer("hello");
        buffer.append("java");
        System.out.println(buffer);
	}

}

Kết quả:

Ví dụ về StringBuilder trong java

public class BuilderTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		StringBuilder builder = new StringBuilder("hello");
        builder.append("java");
        System.out.println(builder);
	}

}

Kết quả:

Test hiệu suất của StringBuffer và StringBuilder trong java trong java

public class ConcatTest01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		long startTime = System.currentTimeMillis();
        StringBuffer sb = new StringBuffer("Java");
        for (int i = 0; i < 100000; i++) {
            sb.append("Hello");
        }
        System.out.println("Thời gian nối chuỗi của StringBuffer: "
                + (System.currentTimeMillis() - startTime) + "ms");
        startTime = System.currentTimeMillis();
        StringBuilder sb2 = new StringBuilder("Java");
        for (int i = 0; i < 100000; i++) {
            sb2.append("Hello");
        }
        System.out.println("Thời gian nối chuỗi của StringBuilder: "
                + (System.currentTimeMillis() - startTime) + "ms");
	}

}

Kết quả: