728x90
단일 스레드(Single-threaded) ? 멀티 스레드(Multi-threaded)?
단일 스레드 환경은 단순한 작업이나 순차적인 작업을 처리하는 데에 적합합니다.
하지만 멀티 코어 프로세서가 널리 사용되고 있고, 병렬 처리 또는 동시성이 필요한 작업들이 증가함에 따라 멀티 스레드 환경이 더 많이 사용되고 있습니다.
멀티 스레드를 사용하면 작업을 효율적으로 분할하여 병렬로 처리할 수 있어서 성능 향상이 이루어질 수 있습니다.
하지만 스레드 간의 동기화와 자원 공유에 주의해야 하며, 스레드 안전성 문제에 대한 고려가 필요합니다.
String
- 문자열을 나타내는 불변( immutable) 클래스
- 문자열을 생성하고 조작하는데 사용
- String 객체를 생성하면 그 값을 변경할 수 없으며, 문자열 연산이 필요한 경우에는 새로운 String 객체가 생성됨
- 문자열 조작 시에 메모리 공간을 추가로 사용할 수 없다는 단점이 있지만, 스레드 안전(thread-safe) 하고 사용하기 편함
String str1 = "Hello";
String str2 = "World";
String result = str1 + ", " + str2;
System.out.println(result); // 출력: Hello, World
StringBuilder
- 가변(mutable)문자열을 나타내는 클래스
- StringBuilder 객체는 내부 버퍼를 사용하여 문자열을 조작
- 문자열의 추가, 수정, 삭제 등을 효율적으로 처리할 수 있음
- StringBuilder 는 스레드 안전하지 않으므로, 단일 스레드 환경에서 사용하는 것이 좋음
StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(", ");
sb.append("World");
String result = sb.toString();
System.out.println(result); // 출력: Hello, World
Java | StirngBuilder - 1개 이상의 문자열 클래스
StringBuilder " Java 에서 문자열을 효율적으로 처리하기 위한 클래스 " 가변적인 문자열을 다룰 수 있으며 문자열을 추가,수정,삭제하는 작업 지원 // StringBuilder 인스턴스 생성 StringBuilder sb = new String
megak.tistory.com
StringBuffer
- StringBuilder 와 비슷하지만 스레드 안전한 클래스
- 동기화된 메서드를 제공하여 여러 스레드에서 안전하게 사용할 수 있음
- StringBuilder와 달리 성능 면에서 약간의 오버헤드가 있을 수 있음
- 멀티스레드 환경에서 문자열 조작이 필요한 경우 StringBuffer 를 사용하는 것이 좋음
StringBuffer sb = new StringBuffer();
sb.append("Hello");
sb.append(", ");
sb.append("World");
String result = sb.toString();
System.out.println(result); // 출력: Hello, World
각 클래스의 차이점
문자열을 조작하는 방식과 스레드 안전 여부 등에서 차이가 있으며,
상황에 따라 적절한 클래스를 선택하여 사용할 것
String 클래스 - 문자열 조작이 빈번하지 않은 경우나 스레드 안전이 중요하지 않은 경우
StringBuilder - 단일 스레드 환경에서 문자열 조작이 많은 경우
StringBuffer - 멀티스레드 환경에서 문자열 조작이 필요한 경우
728x90
'1. basic' 카테고리의 다른 글
문자열을 반전시키는 가장 좋은 방법은 ? (0) | 2023.07.10 |
---|---|
String str ="i"와 String str = new String("i")가 동일? (0) | 2023.07.06 |
Java 에서 String은 기본 데이터 타입 ? (0) | 2023.07.05 |
Java 에서 Math.round(-1.5)의 의미 (0) | 2023.07.05 |
Java 에서 final 의 기능 (0) | 2023.07.05 |