본문 바로가기

전체 글

(229)
[스레드] 12. 스레드풀(3) - 리턴값이 있는 작업 완료 통보 package ex09_execute_submit; import java.util.concurrent.*; public class ResultByCallableExample { public static void main(String[] args) { ExecutorService executorService = Executors.newFixedThreadPool( Runtime.getRuntime().availableProcessors() // cpu의 코어수 ); System.out.println("[작업 처리 요청]"); Callable task = new Callable() { @Override public Integer call() throws Exception {..
[스레드] 11. 스레드풀(2) 예제1) package ex09_execute_submit; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ThreadPoolExecutor; public class ExecuteVsSubmitExample { public static void main(String[] args) { ExecutorService executorService = Executors.newFixedThreadPool(2); for (int i = 0; i < 10; i++) { Runnable runnable = new Runnable() { @Override public v..
[스레드] 10. 스레드풀(1) ExecutorService 스레드 폭증 - 병렬 작업 처리가 많아지면 스레드의 개수가 증가 - 스레드 생성과 스케쥴링으로 인해 cpu가 바빠지고, 메모리 사용량이 늘어난다. - 따라서 애플리케이션 성능 급격히 저하됨. 스레드 풀(Thread pool) - 작업 처리에 사용되는 스레드를 제한된 개수만큼 미리 생성 - 작업 큐(Queue)에 들어오는 작업들을 하나씩 스레드가 맡아 처리 - 작업 처리가 끝난 스레드는 작업 결과를 애플리케이션으로 전달 - 스레드는 다시 작업큐에서 새로운 작업을 가져와 처리 ExecutorService 인터페이스와 Executors 클래스 - 스레드풀을 생성하고 사용할 수 있도록 java.util.concurrent 패키지에서 제공 - Executors의 정적 메소드를 이용해서 ExecutorService..