2011-11-08 6 views
5

Donc, j'ai plusieurs étapes, étape 1 -> étape 2 -> étape 3 -> étape4, donc dans certains cas, le producteur serait un consommateur, et à chaque étape sont plusieurs producteurs/consommateurs à utiliser plusieurs cpus. Dans le cas où certains paquets manqueraient des étapes, c.-à-d. Passer directement de l'étape 1 à l'étape 4.Meilleure façon de mettre en œuvre un modèle de producteur/consommateur multiple en Java 6

Donc j'allais avoir une classe pour chaque étape, partageant une BlockingQueue avec l'étape précédente, mais j'ai aussi lu que le ExecutorService fonctionne comme un modèle Producer/Consumer tout en un, alors je suis en train d'essayer d'aller avec la meilleure abstraction.

Cependant il me semble qu'en utilisant un Executor, le bit producteur est fait avant qu'ils ne soient soumis à l'exécuteur, de manière séquentielle ce qui n'est pas ce que je veux.

Quelqu'un pourrait-il clarifier s'il vous plaît?

+0

Je pense qu'il est préférable de laisser ce chaînage et la planification et le séquençage à un outil SOA tel que le service apache plutôt que d'implémenter notre custom. Mais les points d'extrémité peuvent être invoqués pour être plusieurs consommateurs. Je pense que la mise en œuvre manuelle de ceci a trop de variables et de problèmes de contrôle. Juste une pensée. – r0ast3d

Répondre

1

On dirait que vous avez besoin d'un java.util.concurrent.CompletionService pour chaque étape, au lieu d'un BlockingQueue.

+0

Ouais je viens à ce que je viens moi-même conclusion –

Questions connexes