본문 바로가기

Language/Java2

[JVM] CPU 캐시와 메인 메모리 사이, @Volatile 어노테이션에 대해 알아보자! 들어가며멀티코어 프로세서가 당연해진 현대의 애플리케이션 개발에서, 동시성 제어는 필수적인 고려사항이 되었습니다.그 중에서도 @Volatile 키워드는 자바의 동시성 제어에서 가장 기본적인 영역입니다.그럼에도 저는 사실 부트캠프를 통해 속성으로 프로덕션 코드를 생산하는 방법 위주로 학습했었기에, 잘 몰랐던 부분입니다.그래서 이번 글을 통해 @Volatile의 동작 원리를 CPU 캐시와 메인 메모리의 관계부터 차근차근 살펴보고, 실제 발생할 수 있는 문제 상황과 해결 방법을 자세히 알아보겠습니다.1. CPU 캐시와 메모리 가시성 문제1.1 CPU 캐시는 왜 필요한가?현대의 CPU는 메인 메모리에 비해 훨씬 빠른 속도로 동작합니다.만약 CPU가 모든 데이터를 메인 메모리에서 직접 읽고 써야 한다면, CPU는 .. 2024. 12. 15.
Java의 Enum 클래스와 그 장점(feat. 예시 코드) Java에서, Enum은 "enumerated type"의 약자로, 주어진 집합 내에서만 값을 가질 수 있는 데이터 타입을 의미합니다. 일반적으로 Enum은 상수의 집합을 표현하는 데 사용됩니다. 하지만 Java에서의 Enum은 단순한 상수 묶음을 넘어서며, 다양한 특징과 장점을 갖추고 있습니다. Enum의 주요 특징: 객체 지향적: Java의 Enum은 실질적으로 클래스입니다. 따라서 메서드, 생성자, 인스턴스 변수를 포함할 수 있습니다. 타입 안전: Enum은 미리 정의된 한정된 값들만을 가질 수 있기 때문에, 잘못된 값의 할당을 방지합니다. 싱글턴: Enum 상수는 해당 Enum 타입의 싱글턴 인스턴스입니다. 즉, 같은 타입의 다른 객체로 생성될 수 없습니다. Enum의 장점: 코드의 명확성: 상수.. 2023. 9. 12.
728x90