생각 풀어내기
close
프로필 사진

생각 풀어내기

github: @mete0rfish

  • 분류 전체보기 (12)
    • Java & Kotlin (2)
    • Spring (7)
    • Server (1)
    • DB (2)
    • Reflection (0)
  • 홈
  • 태그
  • 방명록

[Java] 딥 다이브 (String, Wrapper Class, Asynchronize)

StringString의 불변성과 finalString은 클래스 자체가 final이고, 내부에 문자 배열도 final이라 한 번 생성하면 내용이 절대 바뀌지 않는 불변객체이다. 이런 연산들(+, substring, replace 등)은 기존 객체를 수정하는 게 아니라 새로운 String 객체를 생성해 반환한다. 불변성이 있기 때문에 멀티스레드 환경에서도 동기화 없이 안전하게 공유할 수 있고, 해시값이 변하지 않아 HashMap 키로 쓰기에도 적합합니다. 그렇기 때문에 String을 + 와 사용하는 경우 아래와 같은 원리로 문제가 발생한다.매 반복마다 새로운 String이 생성되고, 기존 문자열 전체를 새 배열에 복사시간 복잡도 관점에서 사실상 누적 O(n²) 수준이 되어 큰 입력에서 속도가 급격히 느려짐..

  • format_list_bulleted Java & Kotlin
  • · 2025. 11. 30.

[Java] Java에서의 Lock-Free (Atomic, Volatile)

Lock Free 기법이란?Lock을 사용하지 않고 동시성 문제 해결하는 기법 중 하나를 의미합니다. Lock은 대부분의 동시성 문제를 쉽고 안전하게 해결할 수 있는 효과적인 방법이지만, 여러 단점을 가지고 있습니다.Lock의 단점데드락 (Deadlock)우선순위 역전 (Priority Inversion) : 우선순위가 낮은 스레드가 락을 가진 상태에서 CPU 사용이 우선순위에 의해 스왑되면, 해당 락이 필요한 우선순위 높은 스레드가 종료되지 않는 한 무한정 대기하게 되는 문제가 발생성능 오버헤드 (Performance Overhead) :스레드가 락을 얻기 위해 ‘블록’ 상태로 변경되고ㅡ 이 과정에서 불필요한 컨텍스트 스위치가 발생 동시성 문제의 근본적인 해결법은?예를 들어, 크리티컬 섹션인 count..

  • format_list_bulleted Java & Kotlin
  • · 2025. 11. 30.
  • navigate_before
  • 1
  • navigate_next

Github Profile


Today I Learned

공지사항
  • 블로그 목표
전체 카테고리
  • 분류 전체보기 (12)
    • Java & Kotlin (2)
    • Spring (7)
    • Server (1)
    • DB (2)
    • Reflection (0)
인기 글
전체 방문자
오늘
어제
Copyright © 개발자 성원 모든 권리 보유.
SKIN: Copyright © 쭈미로운 생활 All rights reserved. Designed by JJuum.
and Current skin "dev-roo" is modified by Jin.

티스토리툴바