StringBuilder와 StringBuffer은 클래스가 제공하는 메서드는 동일합니다.
이 두 클래스의 차이점은 동기화 여부입니다.
StringBuffer는 각 메서드별로 Synchronized Keyword가 존재하여, 멀티스레드 환경에서도 동기화를 지원을 하지만
StringBuilder는 동기화를 보장하지 않습니다.
그러므로 멀티스레드 환경이면 StringBuffer을 더 권장하고
단일스레드 환경이라면 StringBuilder을 사용하는것이 좋습니다.
단일스레도 환경에서도 StringBuffer를 사용할 순 있지만, 동기화 관련 처리로 인하여 StringBuilder보다 성능이 떨어집니다.
JDK1.5 버전 이후에는 컴파일 단계에서 String 객체를 사용하더라도 StringBuilder로 컴파일 되도록 변경되었습니다.
그리하여 JDK 1.5 이후 버전에서는 String 클래스를 활용해도 StringBuilder와 성능상으로 차이가 없어졌습니다.
하지만 반복 루프를 사용해서 문자열을 더할 때에는 객체를 계속 추가한다는 사실에는 변함이 없습니다.
그러므로 String 클래스를 쓰는 대신, 스레드와 관련이 있으면 StringBuffer를,
스레드 안전 여부와 상관이 없으면 StringBuilder를 사용하는 것을 권장합니다.
단순히 성능만 놓고보면 연산이 많은경우
StringBuilder > StringBuffer >>> String 순 입니다.
'Etc' 카테고리의 다른 글
Design Pattern - Serialization과 RMI (0) | 2024.05.12 |
---|---|
동시접속자 수 조정을 위한 파일디스크립터 변경방법 (0) | 2024.05.12 |
이클립스 No tests found with test runner 'JUnit 5' 에러 (0) | 2024.04.28 |
Design Pattern - Prototype (0) | 2024.04.28 |
[JAVA] String 타입 선언방법 (0) | 2024.04.28 |