반응형

이번 포스팅은 StringBuffer 와 StringBuilder 에 대하여 알아보도록 하겠습니다.

Java에서 문자열 사용시 String 객체를 많이 사용하는데 String 객체는 new String() 함수를 통해 객체를 매번 생성하여 메모리적으로 좋지 않다는 걸 알고 계실 것입니다. 그래서 저는 StringBuffer 객체를 많이 사용하는데 Android Build 시 StringBuild를 사용할는 Lint 내용을 보고 의문이 들어 두 객체를 비교하여 보겠습니다.

StringBuilder와 StringBuffer를 비교합니다.
이 두 클래스는 서로 거의 동일합니다. 동일한 결과를 반환하는 동일한 이름의 메소드를 사용합니다. 하지만 두 가지 주요 차이점이 있습니다.

Thread Safety

- StringBuffer 메서드가 동기화되므로 한 번에 하나의 Thread에서만 StringBuffer 인스턴스의 메서드를 호출할 수 있습니다. 반면 StringBuilder 메서드는 동기화되지 않으므로 여러  Thread가 차단되지 않고 StringBuilder 클래스의 메서드를 호출할 수 있습니다.

그래서 우리는 StringBuffer가  Thread Safety 클래스인 반면 StringBuilder는 그렇지 않다는 결론을 내렸습니다.

▶ Speed

- StringBuffer는 실제로 StringBuilder보다 2~3배 느립니다. 그 이유는 StringBuffer의 동기화 때문입니다. 한 번에 하나의 개체에서 하나의 Thread만 실행되도록 허용하면 StringBuilder보다 코드 실행 속도가 훨씬 느려집니다.

사실 두 객체가 거의 동일한 메소드와 기능을 수행하기 때문에 아무거나 사용하여도 무방하지만 저는 속도면에서 조금 더 빠른 StringBuilder 클래스를 더 많이 사용합니다.

반응형

'Development > Java' 카테고리의 다른 글

[Java] Java Class 파일 DeCompile  (0) 2020.04.08
[Java] Handler 정리  (0) 2019.09.05
[Java] System.arraycopy 사용법  (0) 2019.09.04

+ Recent posts