본문 바로가기
728x90

Volatile2

[신입 개발자의 '0' 번째 라이브러리] 프린터 연결 방식별 구현. Network, Serial, Android SDK - EPSON 써멀 프린터 라이브러리 제작기(2) 들어가며지난 글에서는 EPSON 써멀 프린터 라이브러리의 전체적인 설계와 PrinterDialect, Adapter 패턴의 활용에 대해 살펴보았습니다.이번 글에서는 각 연결 방식별 구체적인 구현을 자세히 분석해보겠습니다.각 연결 방식별 어댑터는 다음과 같은 공통점과 차이점을 가지고 있습니다:공통점: T83PrinterAdaptor 추상 클래스를 구현하여 기본적인 프린터 명령어 전송 기능을 제공차이점: 실제 프린터와의 연결 방식과 통신 방법이 다름1. NetworkPrinterAdaptor 구현 분석NetworkPrinterAdaptor는 TCP/IP 소켓을 통해 프린터와 통신하는 구현체입니다.핵심 특징internal object NetworkPrinterAdaptor : T83PrinterAdaptor(.. 2024. 12. 15.
[JVM] CPU 캐시와 메인 메모리 사이, @Volatile 어노테이션에 대해 알아보자! 들어가며멀티코어 프로세서가 당연해진 현대의 애플리케이션 개발에서, 동시성 제어는 필수적인 고려사항이 되었습니다.그 중에서도 @Volatile 키워드는 자바의 동시성 제어에서 가장 기본적인 영역입니다.그럼에도 저는 사실 부트캠프를 통해 속성으로 프로덕션 코드를 생산하는 방법 위주로 학습했었기에, 잘 몰랐던 부분입니다.그래서 이번 글을 통해 @Volatile의 동작 원리를 CPU 캐시와 메인 메모리의 관계부터 차근차근 살펴보고, 실제 발생할 수 있는 문제 상황과 해결 방법을 자세히 알아보겠습니다.1. CPU 캐시와 메모리 가시성 문제1.1 CPU 캐시는 왜 필요한가?현대의 CPU는 메인 메모리에 비해 훨씬 빠른 속도로 동작합니다.만약 CPU가 모든 데이터를 메인 메모리에서 직접 읽고 써야 한다면, CPU는 .. 2024. 12. 15.
728x90