2017-10-11 31 views
0

10 개의 작업에 대해 ExecutorService가 있으며 예를 들어 처리하고 싶습니다. 24 가지 작업. 처음 10 개의 작업을 즉시 추가 할 수 있지만 작업이 완료되면 다른 작업을 추가하고 싶습니다.ExecutorService가 동적으로 작업을 추가합니다.

이 동작을 구현하는 모범 사례, 일반적인 접근 방식 또는 패턴이 있습니까?

+0

원하는 경우 작업을 추가하십시오. 귀하의 경우, 모든 24 작업을 추가 – mlecz

답변

0

실행자는 스레드가 스레드를 처리 할 수있을 때까지 기다리는 동안 작업을 유지하기 위해 대기열 ¹을 가지고 있습니다. 특별한 조치를 취할 필요는 없으며, 원하는대로 집행자에게 과제를 제출하십시오.

¹ 이것은 사실이 아니며 대기열이 제한 될 수 있습니다. 그러나 일반적으로 사용되는 경우 (달리 명시되지 않는 한) 대기열은 무제한이므로 걱정할 필요가 없습니다.

+0

답장을 보내 주셔서 감사합니다, Kayaman. 나는 나의 질문에서 정확하지 않다고 생각한다. 모든 프로세스를 즉시 추가하고 싶지 않기 때문에 fixedThreadPool (10)을 사용하고 싶습니다. 내가 아는 한,이 경우 10 개의 모든 작업이 완료된 후에 만 ​​새로운 10 개의 프로세스가 추가됩니다. 나 맞아? – TechnoPriest

+0

아니요, 10 개의 스레드가 실행 중이며 사용 가능한 모든 작업을 처리 함을 의미합니다. 실행 프로그램에 10 개 이상의 태스크가 제출 된 경우, 일부 태스크는 큐에서 대기하여 스레드가 이전 태스크를 완료하고 큐에서 다음 태스크를 검색합니다. 여기에 "프로세스"라는 단어를 사용하지 마십시오. 오해의 소지가 있습니다. – Kayaman