2011-08-12 4 views
0

maxPoolSize = 1로 ThreadPoolExecutorFactoryBean을 구성하면 executor는 항상 1 개의 스레드를가집니다 - 2 개 이상의 스레드를 실행하면 스프링이 일부 큐를 만들거나 다음 호출이 이전에 대기하게됩니까? 감사합니다. .Java Spring ThreadPoolExecutorFactoryBean

답변

1

maxPoolSize가 1이면 한 스레드 만 동시에 실행되므로 한 번에 하나의 작업 만 동시에 실행됩니다. 그러나 ThreadPoolExecutor에는 대기열이 있으므로 즉시 실행되지 않는 모든 작업은 스레드를 사용할 수있게되면 비동기 적으로 완료됩니다. 당신이 maxPoolSize 1과 ThreadPoolExecutor에있을 때

그래서, 다음 코드는이 종료 된 후에는, runnable2이 실행됩니다 먼저 스레드에서 즉시

executor.execute(runnable1); 
executor.execute(runnable2); 

및 runnable1이 실행됩니다 반환합니다.

관련 문제