Executor 프레임워크2 - Executor 프레임워크가 등장한 이유
·
언어/Java
앞선 글에서 직접 스레드를 사용하는 경우 발생할 수 있는 문제점에 대해서 살펴보았다. 이번 글에서는 그에 대한 해결책인 Executor 프레임워크에 대해서 알아보겠다.먼저 이전 글에서 확인해보았던 직접 스레드를 사용할 떄 발생하는 문제점을 확인해보자. 직접 스레드를 사용할 때의 문제점Java에서 병렬 작업을 위해 Thread 클래스를 직접 생성하고 실행하는 방식은 간단해 보이지만, 실제 서비스 환경에서는 몇 가지 심각한 문제들이 발생한다.스레드 재사용의 어려움Thread 인스턴스는 한 번만 실행할 수 있으며, 매번 새로운 스레드를 생성하는 것은 리소스 낭비다.스레드 관리의 복잡성스레드의 생명주기 관리, 예외 처리, 동기화 등은 개발자가 직접 처리해야 하며, 이는 오류를 유발할 수 있다.Runnable 인..
Executor 프레임워크1 - 스레드를 직접 사용할 때 문제점
·
언어/Java
스레드를 직접 사용할 때 문제점 실무에서 스레드를 직접 생성해서 사용하면 다음과 같은 3가지 문제를 가지고 있다. 스레드 생성 시간으로 인한 성능 문제스레드 관리 문제 Runnable 인터페이스의 불편함 스레드 생성 시간으로 인한 성능 문제스레드를 사용하려면 먼저 스레드를 생성해야 한다. 그런데 스레드는 다음과 같은 이유로 매우 무겁다.메모리 할당 : 각 스레드는 자신만의 호출 스택(call stack)을 가지고 있어야 한다. 이 호출 스택은 스레드가 실행되는 동안 사용하는 메모리 공간이다. 따라서 스레드를 생성할 때는 이 호출 스택을 위한 메모리를 할당해야 한다.운영체제 자원 사용 : 스레드를 생성하는 작업은 운영체제 커널 수준에서 이루어지며, 시스템 콜(system call)을 통해 처리된다. 이는 ..