개발/Java

    ThreadLocal의 개념과 세션 관리에서의 사용

    1. ThreadLocal이란?package java.lang;class ThreadLocalThreadLocal은 자바에서 스레드마다 독립적인 변수를 저장할 수 있게 해주는 클래스다. 보통 static 변수나 인스턴스 변수는 여러 스레드가 동시에 접근하면 공유되므로 동기화(synchronized)가 필요하다. 반면, ThreadLocal은 각 스레드 전용 저장소를 만들어 같은 코드에서 같은 ThreadLocal 객체를 참조하더라도 스레드마다 별도 값을 꺼내 쓸 수 있다. 쉽게 말해 **“스레드 전용 전역 변수”**다. 2. ThreadLocal과 InheritableThreadLocalThreadLocal과 이를 상속한 InheritableThreadLocal의 가장 큰 차이는 자식 스레드로의 값 전파..

    ThreadPoolExecutor 동작 원리

    1. ThreadPoolExecutor란Java에서 스레드풀을 관리하는 주요 클래스로,대량의 작업을 효율적으로 처리하기 위해 미리 생성된 스레드풀을 활용할 수 있도록 설계되었다.여러개의 작업을 병렬로 실행할 때 성능을 최적화하고, 스레드 생성과 제거를 관리하여 리소스 사용을 최적화하는 역할을 한다. 2. 생성자(주요 매개변수)public ThreadPoolExecutor( int corePoolSize, //코어 스레드 개수 int maximumPoolSize, //최대 스레드 개수 long keepAliveTime, //유휴 스레드 유지 시간 ..

    Java의 volatile 키워드

    Java의 volatile 키워드

    ※ 이 글은 블로그 주인 본인의 volatile 공부를 위해 Jakob Jenkov 님의 Java Volatile Keyword 글을 번역해본 글입니다. Java의 volatile 키워드는 Java 변수를 "메인 메모리에 저장 중"으로 표시하기 위해 사용된다. 더 정확히 말하자면 휘발성 변수의 모든 읽기는 CPU 캐시가 아닌 컴퓨터의 메인 메모리에서 읽혀지며 휘발성 변수에 대한 모든 쓰기도 CPU 캐시뿐만 아니라 메인 메모리에 기록된다. 사실, Java 5 이후로 volatile 키워드는 단순히 휘발성 변수가 메인 메모리에 기록되고 읽히는 것 그 이상을 보장한다. 이것은 뒤에 이어지는 섹션에서 확인해보자. 변수의 가시성 문제 Java volatile 키워드를 사용하면 쓰레드에 걸쳐 변수의 변경사항을 확인..

    JAVA 버전별 정리

    JAVA를 주언어로 사용하는 개발자라면 JAVA 버전별 특징에 대해 꾸준히 업데이트 해놓으면 좋을것 같다. ▶ JAVA 7 2011년 7월 7일 발표 try-with-resource 추가 switch문에서 String 사용 가능 (JAVA6에서는 switch문에서 String 사용할 수 없었다니..충격) 타입추론(Type Inference): Diamond Operator 추가 JAVA 7이전에는 선언시에도 제네릭 타입을 명시해야 했지만 JAVA 7부터는 컴파일러가 알아서 추론하게끔 가능해졌다. // JAVA 7 이전 List stringList1 = new ArrayList(); // JAVA 7 - Diamond Operator 추가 List stringList2 = new ArrayList();​ ..