java 2

[Java] StringBuffer vs. StringBuilder

Java 가 문자열을 처리할 때, String 외에도 StringBuffer 와 StringBuilder 클래스를 사용하는데 이들에 대해 정리하고자 한다. 1. 공통점- String 이 불변 클래스인 것에 반해, StringBuffer 와 StringBuilder 는 가변 클래스여서 한 번 생성된 객체의 내용을 변경할 수 있다. 2. 차이점- StringBuffer 는 동기화된 메서드를 제공하여 멀티 스레드 환경에서 안전하지만, 단일 스레드 환경에서는 느리다.- StringBuilder 는 동기화되지 않아 단일 스레드 환경에서 더 빠르다. 따라서, 경우에 맞춰 최적의 성능을 위한 클래스 선택이 달라진다.

IT/Java 2025.01.05

[Java] volatile 키워드

Java 에서 사용하는 volatile 키워드에 대해 정리하고자 한다. 1. volatile 이란?- 코어가 변수의 값을 읽어올 때 캐시가 아닌 메모리에서 읽어오도록 변수 앞에 붙이는 키워드 2. 사용 목적- 가시성을 보장한다.(여기서 가시성이란, 공유 데이터를 사용한 다음 동기화 블록을 빠져나가고 나면 다른 스레드가 변경된 최신 값을 즉시 사용할 수 있게 해야 함을 의미한다.)- 변수 접근에 대한 동기화가 큰 오버헤드를 발생시키는 상황에서 대안이 될 수 있다. 3. 한계- 원자적 연산(읽기와 쓰기 작업이 단일 연산)에서만 사용 가능하다.- 스레드를 차단하지 않기 때문에 복잡한 상태 관리에는 적합하지 않다. 4. synchronized 키워드와의 비교- synchronized 키워드는 더 강력한 동기화 ..

IT/Java 2024.12.09