Java에서의 스레드 풀과 비동기 작업 처리: Executor, Callable, Future, FutureTask

스레드 관리의 핵심: 실행자 패턴 소개 기존의 Thread와 Runnable을 직접 사용하는 방식은 스레드 생성/종료의 부담이 크며, 성능 저하를 초래할 수 있습니다. 대신 Executor 계층 구조를 활용하면 스레드의 생명주기 관리와 작업 제출을 분리할 수 있습니다. 실행자 인터페이스의 계층 구조 Executor: 단순한 작업 제출 기능만 제공 (execute(Runnable)) ExecutorServic ...

7월 13일 21:34에 게시됨

Python에서 asyncio.wait와 asyncio.gather 활용법

코루틴 기본 개념 Future 객체 Future는 아직 완료되지 않은 작업의 결과를 나타내는 데이터 구조입니다. 이벤트 루프는 Future 객체의 완료 여부를 모니터링할 수 있으며, 이를 통해 애플리케이션의 일부분이 다른 부분의 작업 완료를 기다릴 수 있습니다. Future 객체는 다음과 같은 상태를 가집니다: Pending (대기 중) Running (실행 중) Done (완료됨) Cancelled ( ...

7월 11일 01:15에 게시됨

Java 멀티스레딩 구현과 락 활용 및 실행 결과 처리 기법

기본 스레드 구현: Runnable 인터페이스 활용 Runnable 인터페이스를 구현할 때 주의점: 작업 객체 인스턴스 생성은 반복문 외부에서 수행해야 합니다. 반복문 내에서 생성할 경우 락 동기화가 제대로 동작하지 않습니다. @Controller @RequestMapping("/task") public class TaskProcessor implements Runnable { private final Lock taskLock = new ReentrantL ...

7월 3일 06:30에 게시됨

Java Executor 프레임워크: 효율적인 스레드 풀 관리 및 활용

왜 스레드 풀(Executor)이 필요한가? 전통적으로 new Thread()를 직접 사용하는 방식은 여러 문제점을 내포합니다. 매번 새로운 스레드 객체를 생성하는 데 비용이 크게 들고, 생성된 스레드들은 관리되지 않은 '야생 스레드'가 되어 시스템 자원을 무분별하게 소비할 수 있습니다. 특히 스레드가 무제한으로 생성되면 리소스 경쟁이 심화되어 시스템이 다운될 위험이 있 ...

6월 2일 23:51에 게시됨