Java ThreadPoolExecutor 고성능 트레이락과 동시성 제어

Executor 프레임워크 핵심 메커니즘 ThreadPoolExecutor는 작업 제출과 실행을 분리하는 생산자-소비자 패턴을 구현한다. 5가지 핵심 구성요소는 다음과 같다. corePoolSize: 유휴 상태라도 제거되지 않는 기본 스레드 수 maximumPoolSize: 부하 급증 시 확장 가능한 상한선 keepAliveTime: corePoolSize 초과 생성된 스레드의 유휴 대기 시간 workQueue: Runnable 객체 ...

7월 2일 16:54에 게시됨

프로세스 풀, 스레드 풀, 코루틴 및 MySQL 데이터베이스 핵심

프로세스 풀과 스레드 풀 과도한 프로세스/스레드 생성은 CPU 성능 저하를 유발합니다. 이를 방지하기 위해 고정된 수의 실행 단위를 미리 생성하는 프로세스 풀/스레드 풀을 사용합니다. 초과 작업은 선행 작업 완료 시까지 대기합니다. from concurrent.futures import ProcessPoolExecutor executor = ProcessPoolExecutor(max_workers=4) task_future = executor.subm ...

6월 12일 19:15에 게시됨

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

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

6월 2일 23:51에 게시됨

스레드 풀 사용 시 주의사항과 모범 사례

스레드 풀 올바르게 선언하기 스레드 풀은 반드시 `ThreadPoolExecutor` 생성자를 통해 수동으로 선언해야 하며, `Executors` 클래스를 사용하여 생성하면 OOM(메모리 부족) 위험이 있습니다. `Executors`가 반환하는 스레드 풀에는 다음과 같은 문제점이 있습니다: `FixedThreadPool`과 `SingleThreadExecutor`: 무제한 `LinkedBlockingQueue`를 사용하며, 큐 크기가 `In ...

6월 1일 18:42에 게시됨

Java 동시성 프로그래밍에서의 스레드와 보조 유틸리티

스레드 생성 방식과 내부 동작 원리 자바에서 스레드를 생성하는 대표적인 방법은 세 가지로 나뉜다. 첫 번째는 Thread 클래스를 상속받아 run() 메서드를 오버라이딩하는 방식이다. new Thread() { @Override public void run() { System.out.println("직접 상속을 통한 스레드 실행"); } }.start(); 두 번째는 Runnable 인터페이스를 구현하는 방법 ...

5월 21일 15:33에 게시됨