JAVA | StringBuffer vs StringBuilder
StringBuilder và StringBuffer là khá giống nhau, điều khác biệt là tất cả các phương thức của StringBuffer đã được đồng bộ, nó thích hợp khi bạn làm việc với ứng dụng đa luồng, nhiều luồng có thể truy cập vào một đối tượng StringBuffer cùng lúc. Trong khi đó StringBuilder có các phương thức tương tự nhưng không được đồng bộ, vì vậy mà hiệu suất của nó cao hơn, bạn nên sử dụng StringBuilder trong ứng dụng đơn luồng, hoặc sử dụng như một biến địa phương trong một phương thức.
STT | 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ề StringBufer:
public class BufferString {
public static void main(String[] args) {
StringBuffer buffer = new StringBuffer("Hello");
buffer.append("Word");
System.out.println(buffer);
}
}
- Ví dụ về StringBuider:
public class BuiderString {
public static void main(String[] args) {
StringBuffer buider = new StringBuffer("Hello");
buffer.append("Word");
System.out.println(buider);
}
}
=> Cả 2 đều cho ra output là : HelloWord. Nhưng về tốc độ xử lý, chúng ta hãy đoạn code sau:
public class TestPerform{
public static void main(String[] args){
long startTime = System.currentTimeMillis();
StringBuffer buffer = new StringBuffer("Hello");
for (int i=0; i<100000; i++){
buffer.append("Word");
}
System.out.println("StringBuffer is: " + (System.currentTimeMillis() - startTime) + "ms");
startTime = System.currentTimeMillis();
StringBuilder buider = new StringBuilder("Hello");
for (int i=0; i<100000; i++){
buider.append("Word");
}
System.out.println("StringBuilder is: " + (System.currentTimeMillis() - startTime) + "ms");
}
}
=> Out put: StringBuffer is: 11ms StringBuilder is: 5ms Từ đó t có thể có nhận xét về tốc độ khi xử lý chuỗi của StringBuider sẽ nhanh hơn StringBuffer!
Không có nhận xét nào: