본문 바로가기
Executor 인터페이스 1. Executor 인터페이스와 구현체 ScheduledExecutorService는 ExecutorService를 확장한 인터페이스이다. 따라서 기본적인 내용은 ExecutorService와 유사한데 스케줄링 실행을 처리하는 몇가지 메소드가 추가되었다. 이 인터페이스를 구현한 대표적인 구현체가 ScheduledThreadPoolExecutor 이다. 결국 ScheduledExecutorService를 이해하기위해서는 Executor인터페이스를 이해해야합니다. 2. Executor인터페이스의 역할 자원은 언제나 제한적이다. 트래픽이 없을때는 아무문제 없지만 엄청난 트래픽이 들어오는데 매 요청마다 스레드를 직접 생성한다면 스레드 생성비용, 스레드간의 문맥교환으로 인해서 문제가 생긴다. 이러한 이유로 스레.. 2020. 8. 22.
자바- Optional Optional java8에서 등장한 Optional에대해서 정리해보자. `Optional` 은 null 관련 문제를 해결해주기위해서 등장했다. 아래와 같이 null이 일어날 상황을 가정해서 코드에 녹여야했다. 런타임 과정에서 null인 객체가 로직에 포함되연서 NPE를 발생시킬 가능성이 있기때문에 이렇게 체크를 해야한다. 이런 방어코드 때문에 유지보수가 점점 힘들어지게 된다. public User findUserById(Long id) { User user = userService.find(id); if(user == null) new NotFoundUserException("존재하지 않는 사용자 입니다.!!!"); return user; } 이제 `Optional` 을 이용해서 위의 코드를 개선시켜보.. 2020. 8. 20.
이펙티브 자바 3,4,5장 - 인스턴스화 막기/의존 객체 생성자 주입/ 싱글톤 보장 이펙티브 자바 3,4,5장 - 인스턴스화 막기/의존 객체 생성자 주입/ 싱글톤 보장 이펙티브 자바 3,4,5장을 읽고 정리한 내용이다. 1장,2장 내용과 마찬가지로 객체 생성과 파괴에 대해서 다루고 있다. 1장,2장의 내용은 아래 글에서 확인할 수 있다. 현재 5장까지 읽었는데 자바의 Collection Framework나 Spring Framework의 내부 구현체를 보면 정말로 이펙티브 자바에서 나온 패턴을 많이 사용하고 있는것을 확인할 수 있다. 정적 팩토리 메서드 (static factory method) 정적 팩토리 메서드 (static factory method) 이란? 생성자 대신 정적 팩토리 메서드를 사용할 수 없는지 생각 일반적으로 특정 클래스의 객체를 생성할 때 생성자를 사용해서 만든다.. 2020. 8. 6.
인터페이스를 사용하는 이유 서론 자바로 애플리케이션을 개발할때, 인터페이스를 사용한다. 일반적으로 인터페이스에 대해서 설명을 하라고 하면 `기능에 대한 명세 집합` 이라고 표현하는 경우가 많다. 기능에 대한 명세를 모으기 위해서만 인터페이스를 사용하는가? 에 대해서 의문이 들었다. 인터페이스가 기능에 대한 명세 집합이라는 목적만 가지면 오히려 코드의 복잡성만 올라가는게 아닐까 생각이 든다. 인터페이스를 왜 사용해야하고 어떤 효과가 있는지 좀 더 깊이 알아보기 위해서 이 글을 작성하였다. 인터페이스 (Interface) ? 인터페이스의 본질을 알아보기전에 간단하게 OOP에 대해서 다시 정리하고 넘어가자. OOP는 변경에 유연한 설계기법이다. OOP에서 자주 나오는 용어에는 다형성이 있다. `다형성`은 상속을 통해 기능을 확장하거나 .. 2020. 5. 8.
java - static 변수 서론 싱글톤 패턴, 정적 팩토리 메서드 패턴등의 디자인 패턴에서 사용하는 static variable을 알아보자. static(정적), 뭐가 정적이라는걸까? 자바에서는 static 키워드를 사용해서 변수나 메서드를 선언할 수 있다. static을 붙인 변수와 붙이지 않은 변수의 차이점은 뭘까? static 이라는 영어단어를 한글로 해석하면 정적으로 해석할 수 있다. 정적이라는게 동적이지 않다는것인데, 뭐가 정적이라는걸까? 기능을 통해서 유추해보자. 아래와 같이 Test라는 클래스를 만들고 main 메서드를 static으로 선언하였다. JVM에서는 static main메서드를 보고 코드를 실행하게 된다. class Test { public static void main(String [] args) { Sy.. 2020. 5. 7.
Java에서 정수를 표현할때 왜 Integer를 많이 사용할까? 서론 Java의 데이터타입은 크게 `기본형 자료`와 `참조형 자료`로 구분할 수 있다. 먼저 기본형 자료형을 알아보자. Java의 자료형을 정리하는 차원에서 책을 보다가 byte와 short 자료형이 있는데 대부분의 정수형을 표현할때 Intege를 사용하는지 궁금증이 생겼다. 기본형 자료 논리형(boolean) Java 에서는 논리형 자료로 `boolean`을 제공한다. true와 false를 나타낸다. 다른 기본형과의 연산은 불가능한 특징이 있다. 크기는 1byte이다. 문자형(char) 컴퓨터는 0,1만 알고 있는 기계이다. 따라서 문자형도 결국에는 0,1로 저장이 된다. 내부적으로는 유니코드 / 아스키코드 로 맵핑시켜서 저장을 시킨다. 따라서 실수형이나 정수형과 연산이 가능한 특징이 있다. 크기는 .. 2020. 5. 7.