본문 바로가기

Programming Language/Java

(3)
[Java] ThreadLocal에 대해서.... 그리고 주의점 ThreadLocal은 Java에서 각 쓰레드별로 독립적으로 변수를 관리하기 위한 객체 이다. Java의 쓰레드 class 정의를 보면 아래와 같이 쓰레드 별로 ThreadLocals 변수를 가지고 있는것을 볼 수 있다. java.lang.Thread public class Thread implements Runnable { /* Make sure registerNatives is the first thing does. */ private static native void registerNatives(); static { registerNatives(); } ... /* ThreadLocal values pertaining to this thread. This map is maintained * by t..
Java group key class로 stream groupingBy 사용하기 백엔드를 개발할때 DB 에서 GroupBy 를 할때가 있는데 간단한 GroupBy연산의 경우 Java 단에서 하면 DB부담을 줄여주고 효율적인 개발을 할 수 있다. java단에서 간단한 로직으로 grouping 을 할수 있으나 key가 여럿일 경우에는 다중 loop가 발생하게 된다. java 1.8의 stream + groupingBy기능을 활용하면 좀더 편하게 할수 있고 GroupingKey를 나타내는 class를 하나 사용하면 좀더 간결하게 groupingBy를 수행할 수 있다. Student 클래스 import lombok.Builder; import lombok.Getter; import lombok.Setter; @Builder @Getter @Setter public class Student ..
[Java] 제네릭(Generic) 분석 T extends 클래스 상속을 이용해서 T의 자료형을 제한함 클래스 선언시 사용하며 인스턴스 생성시 특정 클래스를 상속받은 클래스형만 인스턴스 내부에서 사용할 수 있도록 함 특정 인터페이스를 구현한 클래스만 사용하려는 경우에도 사용 가능 public interface Behavior { void displayName(); } public class Car implements Behavior{ @Override public void displayName() { System.out.println("This is a car."); } } public class Bus implements Behavior{ @Override public void displayName() { System.out.println("..