Java

· Java
이전 프로젝트에서 요청별로 고유한 로그 컨텍스트를 남기기 위해 MDC를 도입한 적이 있다. 당시에는 “MDC가 ThreadLocal 기반이다” 정도만 짚고 넘어갔지만, 다시 생각해 보면 멀티스레드 환경에서 요청마다 격리된 상태를 보장하려면 ThreadLocal의 동작 원리를 제대로 이해해야만 안정적으로 사용할 수 있다. 사실 Spring Security 역시 SecurityContextHolder가 내부적으로 ThreadLocal을 쓰고 있고, LocaleContextHolder나 RequestContextHolder 등도 모두 같은 원리를 활용한다. 따라서 이 글에서는 멀티스레드 개념부터 JVM과 Spring이 스레드를 어떻게 관리하는지 살펴보고, 마지막으로 ThreadLocal이 실제로 어떤 구조로 ..
· Java
WORA(Write Once Run Anywhere)고급 언어로 작성된 프로그래밍 언어를 기계어로 번역하는 것에는 대표적으로 2가지 방법이 있다. 컴파일러(Compiler: 번역기)- 플랫폼 종속적이다. - 소스코드를 한 번에 연속적으로 번역한다.- 실행속도가 빠르다. 인터프리터(Interpreter: 해석기)- 플랫폼 비종속적이다.- 한 줄씩 기계어 번역을 수행한다.- 번역속도는 빠르지만 실행속도가 느리다. 여기서 플랫폼은 OS나 코드가 돌아갈 환경을 말한다.또한, Compiler와 Interpreter를 혼합하여 사용하는 언어를 Hybrid 언어라고 하고, Java는 여기에 속한다.이 둘을 모두 사용함으로써 Write Once Run Anywhere를 실현할 수 있었다. 자바 컴파일러(javac)..
가든잉
'Java' 카테고리의 글 목록