본문 바로가기
728x90

Backend/Java15

[Java] 🚦 자바 메모리 가시성(Java Memory Visibility) [Java] 🚦 자바 메모리 가시성(Java Memory Visibility) Java와 같은 멀티스레드 환경에서 각 스레드는 성능 향상을 위해 메인 메모리(Heap)에 있는 변수의 복사본을 자신의 캐시(CPU 캐시 등)에 저장하여 사용합니다. 스레드가 변수 값을 변경하면, 이 변경 내용은 즉시 메인 메모리에 반영되지 않고 자신의 캐시에만 반영될 수 있습니다. 이때 다른 스레드가 해당 변수 값을 읽으려 하면, 메인 메모리에 아직 반영되지 않은 오래된 캐시 값을 읽거나 전혀 다른 값을 읽을 수 있습니다. 이처럼 한 스레드의 변수 변경 결과를 다른 스레드가 즉시(또는 적절한 시점에) 볼 수 없는 현상을 메모리 가시성 문제라고 합니다. Spring 애플리케이션에서 여러 웹 요청이 같은 서비스 빈의 상태를 .. 2025. 4. 20.
[Java] ☕ Thread 정리: 메서드, 생명주기, 제어 방법 [Java] ☕ Thread 정리: 메서드, 생명주기, 제어 방법 멀티스레드는 자바에서 병렬 처리를 구현하는 핵심 개념 중 하나다. 이 글에서는 Thread 클래스가 제공하는 주요 메서드부터, 스레드의 생명주기 및 제어 방법까지 핵심만 정리해서 소개한다.  🧵 1. Thread 클래스가 제공하는 주요 메서드 자바의 Thread 클래스는 스레드 실행을 위한 다양한 메서드를 제공한다. 목적에 따라 크게 3가지 범주로 나눌 수 있다. 1-1. ✅ 실행 관련 메서드메서드설명start()새로운 스레드를 시작하고, 내부적으로 run()을 호출한다.run()스레드에서 실행할 실제 작업을 정의한다. 직접 호출하면 멀티스레드가 아님.join()해당 스레드가 종료될 때까지 현재 스레드를 일시 중지시킨다.join(long.. 2025. 4. 7.
[Java] 🧵 Thread 기본 개념 [Java] 🧵 Thread 기본 개념 ✅ 간단 정리항목설명Thread 개념실행 단위. 기본은 main 스레드생성 방법Thread 상속 vs Runnable 구현실행과 종료start()로 실행, 안전하게 종료 처리 필요동기화공유 자원 보호를 위한 synchronized데몬 스레드백그라운드 보조 역할, main 종료 시 자동 종료 🔍 Thread란? Thread(스레드)는 프로세스 내에서 실행되는 최소 실행 단위를 말한다. 자바 프로그램은 main 스레드에서 시작하며, 동시에 여러 작업을 병렬로 처리하고 싶다면 멀티스레딩(Multithreading)을 활용한다. 멀티스레딩은 UI 응답성, 백그라운드 처리, 서버 동시 요청 처리 등 다양한 상황에서 성능과 효율을 극대화할 수 있게 해 준다.  ⚙️ 자바에.. 2025. 4. 6.
[Java] (2) 시간, 날짜 관련 API(LocalTime, LocalDate, LocalDateTime) (2) 시간, 날짜 관련 API(LocalTime, LocalDate, LocalDateTime) 1. 시간, 날짜 관련 클래스 1-1. LocalTime 시간 정보만을 나타내는 클래스로 시(hour), 분(minute), 초(second), 나노초(nanoOfSecond)를 포함하며 시간 오프셋(TImeZone)에 대한 정보는 없습니다. 시간 관련 클래스 시간 오프셋(TimeZone)에 대한 정보는 없다. 시(hour), 분(minute), 초(second), 나노초(nanoOfSecond)의 값을 갖는다 ex) 19:35:25.830054400 1-2. LocalDate 날짜 정보만을 나타내는 클래스로 연(year), 달(month), 날(dayOfMonth)의 포함하며, 특정 시간대나 시간 오프셋(.. 2023. 8. 20.
728x90