Bảng dưới liệt kê các điểm khác nhau này:
Lớp StringBuffer | Lớp StringBuilder |
---|---|
Lớp StringBuffer là đồng bộ (synchronized), tức là an toàn luồng (thread safe). Nghĩa là hai Thread không thể gọi đồng thời các phương thức của lớp StringBuffer | StringBuilder là không đồng bộ (non-synchronized) tức là không an toàn luồng. Nghĩa là hai Thread có thể gọi đồng thời các phương thức của lớp StringBuilder |
StringBuffer là kém hiệu quả hơn StringBuilder | StringBuilder là hiệu quả hơn StringBuffer |
public class BufferTest{
public static void main(String[] args){
StringBuffer buffer=new StringBuffer("hello");
buffer.append("java");
System.out.println(buffer);
}
}
Chương trình trên sẽ cho kết quả dạng:
hellojava
public class BuilderTest{
public static void main(String[] args){
StringBuilder builder=new StringBuilder("hello");
builder.append("java");
System.out.println(builder);
}
}
Chương trình trên sẽ cho kết quả dạng:
hellojava
Bạn thử ví dụ đơn giản sau để kiểm tra hiệu suất của lớp StringBuffer và lớp StringBuilder 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<10000; i++){
sb.append("Hoclaptrinh");
}
System.out.println("Thoi gian tieu ton boi StringBuffer: " + (System.currentTimeMillis() - startTime) + "ms");
startTime = System.currentTimeMillis();
StringBuilder sb2 = new StringBuilder("Java");
for (int i=0; i<10000; i++){
sb2.append("Hoclaptrinh");
}
System.out.println("Thoi gian tieu ton boi StringBuilder: " + (System.currentTimeMillis() - startTime) + "ms");
}
}
Chương trình trên sẽ cho kết quả dạng:
Time taken by StringBuffer: 16ms
Time taken by StringBuilder: 0ms
Hoclaptrinh.vn © 2017
From Coder With
Unpublished comment
Viết câu trả lời