August 02, 2021
String 리터럴
String 객체
원시형(Primivive)은 스택 영역에 저장된다.
+연산을 하게 된다면 내용이 수정되는 것이 아니라 완전히 새로운 String 객체를 생성해 반환한다.
동기화의 유무가 가장 큰 차이점이다.
동기화(synchronized) : 다른 스레드에서 현재 실행중인 메소드나 블록이 끝날 때까지 대기해야함을 의미
싱글스레드 환경에서 시간 측정
// 싱글스레드
StringBuffer stringBuffer = new StringBuffer();
StringBuilder stringBuilder = new StringBuilder();
new Thread(() -> {
long startTime = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
stringBuffer.append(i);
}
long endTime = System.currentTimeMillis();
System.out.println("StringBuffer 시간(milliseconds) : " + (endTime - startTime));
}).start();
new Thread(() -> {
long startTime = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
stringBuilder.append(i);
}
long endTime = System.currentTimeMillis();
System.out.println("StringBuilder 시간(milliseconds) : " + (endTime - startTime));
}).start();
싱글스레드 환경에서 StringBuilder가 StringBuffer보다 대체적으로 빠르다는 결과를 위 코드를 통해 확인할 수 있다.
힙 영역, 스택 영역
단일스레드, 멀티스레드
프로세스 : 운영체제로부터 자원을 할당받는 작업의 단위
스레드 : 프로세스가 할당받은 자원을 이용하는 실행의 단위