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에 게시됨