[Java] StringBuilder, StringBuffer의 차이

지인·2023년 6월 21일
0

Java

목록 보기
6/7
post-custom-banner

🐰 StringBuffer

내부적으로 버퍼라고 하는 독립적인 공간을 가지게 되어, 문자열을 바로 추가할 수 있어 공간의 낭비도 없으며 문자열 연산 속도도 매우 빠르다는 특징이 있다.


🐰 StringBuilder

문자열을 더할 때 새로운 객체를 생성하는 것이 아니라 기존의 데이터에 더하는 방식을 사용하기 때문에 속도도 빠르며 상대적으로 부하가 적다.


🐰 StringBuffer, stringbuilder의 차이

  • 멀티스레드 환경에서 thread-safe 여부가 다르다.

    • StringBuffer 클래스는 스레드에 안전하다.
    • StringBuilder 클래스는 스레드에 안전하지 않다.
  • StringBuilder는 동기화를 지원하지 않고, StringBuffer는 동기화를 지원하여 멀티 스레드 환경에서도 안전하게 동작할 수 있다.

  • 그 이유는 StringBuffer는 메서드에서 synchronized 키워드를 사용하기 때문이다.

🐾 synchronized 키워드는 여러개의 스레드가 한 개의 자원에 접근하려고 할 때, 현재 데이터를 사용하고 있는 스레드를 제외하고 나머지 스레드들이 데이터에 접근할 수 없도록 막는 역할을 수행한다.


정리

  • 문자열이 빈번하게 변경되면서 멀티스레드 환경이라면 StringBuffer 사용을 고려
  • 문자열이 빈번하게 변경되면서 멀티스레드 환경이 아니라면 StringBuilder 사용을 고려

참고

profile
열쩡
post-custom-banner

0개의 댓글