2013-07-16 2 views
1

원격 메시지 큐가 새 작업 메시지와 로컬 ExecutorService에 대해 주기적으로 폴링되어야하는 생산자 - 소비자 상황이 있습니다. 작업을 실행합니다. MQ를 폴링하는 많은 작업 실행자가 있습니다. 로컬 executor는 처리량이 상대적으로 고정 된 고정 수의 스레드를 갖습니다.프로듀서 - 로컬 소비자 용 ExecutorService 인 프로듀서 - 소비자

문제는 비록 내가 그들을 처리 할 수없는 경우 원격 메시지를 소비하는 단지를 유지하는 기본 메시지 루프를 싶지 않아,하지만 난 할 더 많은 일이있을 경우 지속적으로 작업이 원하는. 각 스레드마다 최소한 하나의 작업을 준비하고 싶지만 다른 작업자를 굶겨 죽이지 않는 것은 너무 많이는 아닙니다.

클래식 프로듀서 - 소비자. 문제는 ExecutorService이 내가 알아야 할 정보 (총 스레드, 사용중인 스레드 수 등)를 추상화한다는 것입니다. 실제 스레드 수는 해당 ExecutorService을 만들 때 시작시 구성됩니다. 이것은 원격 메시지 대기열에 대한 추상화와 함께 주요 작업자 루프에 주입됩니다.

나는 분명히 뭔가 빠져있는 것 같아. 현재, 나는 카운트를 추적하기 위해 ExecutorService 주변의 장식 패턴을 향하고 있습니다. 내가 궁금한 점은 더 세련된 해결책이 있다는 것입니다. 당신이 ExecutorServiceThreadPoolExecutor 구현을 사용하는 경우

답변

2

는 당신은 당신이이 ExecutorService (예를 들어, getActiveCount()getTaskCount())

+0

보기에서 누락 필요한 정보에 액세스 할 수 있습니다! 나는 명백한 것이 빠져 있음을 알았다. 감사. :) 내 inc/dec 카운트가 하나씩 드리프트하기 시작한 다음 내 손에 엉망이 생길 경우 염려했다. – mckamey

관련 문제