@Test
void ThreadPoolExecutor의_maxPool은_queue의_작업이_전부_차면_생성된다() throws InterruptedException {
// 최대 7개의 스레드풀, 나머지 3개의 작업은 대기
// 하지만 예측과 다르게 큐 작업이 우선된다.
// 큐 작업이 꽉 차면 그제서야 새로운 스레드가 생성된다.
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
2,
7,
0,
TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<>(3)
);
threadPoolExecutor.execute(logWithSleep("core job")); // core thread
threadPoolExecutor.execute(logWithSleep("core job")); // core thread
threadPoolExecutor.execute(logWithSleep("max pool job")); // queue
threadPoolExecutor.execute(logWithSleep("max pool job")); // queue
threadPoolExecutor.execute(logWithSleep("max pool job")); // queue
threadPoolExecutor.execute(logWithSleep("queue job")); // new thread
threadPoolExecutor.execute(logWithSleep("queue job")); // new thread
threadPoolExecutor.execute(logWithSleep("queue job")); // new thread
threadPoolExecutor.execute(logWithSleep("queue job")); // new thread
threadPoolExecutor.execute(logWithSleep("queue job")); // new thread
Thread.sleep(1000);
}
Add a code snippet to your website: www.paste.org