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

Difference between StringBuffer and StringBuilder in Java

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

No.StringBufferStringBuilder
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) {
        StringBuffer buffer = new StringBuffer("hello");
        buffer.append("java");
        System.out.println(buffer);
    }
}

Output:

hellojava

Ví dụ về StringBuilder trong java

public class BuilderTest {
    public static void main(String[] args) {
        StringBuilder builder = new StringBuilder("hello");
        builder.append("java");
        System.out.println(builder);
    }
}

Output:

hellojava

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

public class ConcatTest {
    public static void main(String[] args) {
        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");
    }
}

Trả lời