ThreadLocal 쓰레드 로컬은 해당 쓰레드만 접근할 수 있는 특별한 저장소다. 쓰레드 로컬을 사용하면 각 쓰레드마다 별도의 내부 저장소를 제공한다. 따라서 같은 인스턴스의 쓰레드 로컬 필드에 접근해도 문제 없다. 여러 쓰레드가 같은 인스턴스의 멤버 변수에 접근하면 처음 쓰레드가 보관한 데이터가 사라질 수 있는데, 이런 경우 쓰레드 로컬을 사용하면 데이터를 안정적으로 접근하고 사용할 수 있다. thread-A 가 userA 라는 값을 저장하면 쓰레드 로컬은 thread-A 전용 보관소에 데이터를 안전하게 보관한다. thread-B 가 userB 라는 값을 저장하면 쓰레드 로컬은 thread-B 전용 보관소에 데이터를 안전하게 보관한다. 자바는 언어차원에서 쓰레드 로컬을 지원하기 위한 java.lang..
백기선님이 과거에 진행했던 Java 스터디 12주차 스터디 입니다. 애노테이션 정의하는 방법 애노테이션이란 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종이다. 보통 @ 기호를 앞에 붙여서 사용한다. JDK 1.5 버전 이상에서 사용 가능하다. 자바 애너테이션은 클래스 파일에 임베디드되어 컴파일러에 의해 생성된 후 자바 가상머신에 포함되어 작동한다. 새로운 애노테이션을 정의하는 방법은 아래와 같다. '@' 기호를 붙이는 것을 제외하면 인터페이스를 정의하는 것과 동일하다. 엄밀히 말해서 @Override는 애노테이션이고 Override는 애노테이션의 타입이다. @interface 애노테이션 이름{ 타입 요소이름(); //애노테이션의 요소를 선언한다. .. } 메타 에노테이션이란? 메타 에노테이..
백기선님이 과거에 진행했던 Java 스터디 13주차 스터디 입니다. Stream, Buffer Stream이란? 자바에서 입출력을 수행하려면, 즉 어느 한쪽에서 다른 쪽으로 데이터를 전달하려면, 두 대상을 연결하고 데이터를 전송할 수 있는 무언가가 필요한데 이것을 스트림이라고 정의한다 스트림이란 데이터를 운반하는데 사용되는 연결통로다 스트림은 단방향통시만 가능하기 때문에 하나의 스트림으로 입력과 출력을 동시에 처리할 수 없다. 그래서 입력과 출력을 동시에 수행하려면 입력을 위한 입력스트림과 출력을 위한 출력스트림, 총 2개의 스트림이 필요하다. 스트림은 먼저 보낸 데이터를 먼저 받게 되어 있으며 중간에 건너뜀 없이 연속적으로 데이터를 주고받는다. 큐와 같은 FIFO구조로 되어 있다고 생각하면 된다. Bu..
백기선님이 과거에 진행했던 Java 스터디 11주차 스터디 입니다. enum 정의하는 방법 enum(열거형)은 서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할 때 사용하면 유용하다. 열거형을 정의하는 방법은 아래와 같다. enum 열거형이름 { 상수명1, 상수명2, ... } 열거형에 정의된 상수를 사용하는 방법은 '열거형이름.상수명'이다. 클래스의 static 변수를 참조하는 것과 동일하다. enum Direction{ EAST, SOUTH, WEST, NORTH } class Unit{ int x, y; Direction dir; void init(){ this.dir = Direction.WEST; //유닛의 방향을 WEST로 초기화한다. } } 열겨형 상수간의 비교에는 ==을..