JAVA/멀티스레딩
Thread Pooling
최-코드
2024. 8. 28. 16:07
Thread Pooling
- 매번 처음부터 다시 스레드를 생성하지 않고, 미리 스레드를 생성한 다음 재사용하는 방식을 말한다.
- 따라서 기존보다 낮은 오버헤드를 발생하게 된다.
- 작업들은 대기열에 저장되며, 모든 스레드가 동작 중일 때는 대기열에서 대기한다.
Executor.newFixedThreadPool
- 스레드 풀에 있는 스레드는 고정된 개수를 가지게 된다.
- 빌트인 대기열이 딸려 있다.
import java.util.concurrent.*;
public class Example {
private static final int NUMBER_OF_THREADS = 1;
public static void main(String[] args) throws InterruptedException {
ExecutorService executor = Executors.newFixedThreadPool(NUMBER_OF_THREADS);
CountDownLatch countDownLatch = new CountDownLatch(1); // 대기할 스레드 개수
//submit 함수를 통해 스레드에서 작업 실행
executor.submit(() -> {
try {
System.out.println("Hello");
} catch (Exception e) {
e.printStackTrace();
} finally {
countDownLatch.countDown();
}
});
countDownLatch.await(); // 모든 작업이 완료될 때까지 대기, 즉 countDownLatch의 값이 0이 될 때
executor.shutdown(); // 스레드 풀 종료
}
}