StringString의 불변성과 finalString은 클래스 자체가 final이고, 내부에 문자 배열도 final이라 한 번 생성하면 내용이 절대 바뀌지 않는 불변객체이다. 이런 연산들(+, substring, replace 등)은 기존 객체를 수정하는 게 아니라 새로운 String 객체를 생성해 반환한다. 불변성이 있기 때문에 멀티스레드 환경에서도 동기화 없이 안전하게 공유할 수 있고, 해시값이 변하지 않아 HashMap 키로 쓰기에도 적합합니다. 그렇기 때문에 String을 + 와 사용하는 경우 아래와 같은 원리로 문제가 발생한다.매 반복마다 새로운 String이 생성되고, 기존 문자열 전체를 새 배열에 복사시간 복잡도 관점에서 사실상 누적 O(n²) 수준이 되어 큰 입력에서 속도가 급격히 느려짐..
Lock Free 기법이란?Lock을 사용하지 않고 동시성 문제 해결하는 기법 중 하나를 의미합니다. Lock은 대부분의 동시성 문제를 쉽고 안전하게 해결할 수 있는 효과적인 방법이지만, 여러 단점을 가지고 있습니다.Lock의 단점데드락 (Deadlock)우선순위 역전 (Priority Inversion) : 우선순위가 낮은 스레드가 락을 가진 상태에서 CPU 사용이 우선순위에 의해 스왑되면, 해당 락이 필요한 우선순위 높은 스레드가 종료되지 않는 한 무한정 대기하게 되는 문제가 발생성능 오버헤드 (Performance Overhead) :스레드가 락을 얻기 위해 ‘블록’ 상태로 변경되고ㅡ 이 과정에서 불필요한 컨텍스트 스위치가 발생 동시성 문제의 근본적인 해결법은?예를 들어, 크리티컬 섹션인 count..