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(); // 스레드 풀 종료
}
}
'JAVA > 멀티스레딩' 카테고리의 다른 글
락킹 심화 (0) | 2024.08.29 |
---|---|
병행성 문제와 솔루션 (0) | 2024.08.29 |
멀티 스레드 주의 사항(병행성 문제) (0) | 2024.08.29 |
스레드 조정 (0) | 2024.08.28 |
스레드 생성 (0) | 2024.08.27 |