Um Produzenten-/Konsumenten-Threading mit einer Warteschlange einzurichten, gibt es zwei Hauptkomponenten: Executor-Dienste und, falls erforderlich, eine Blockierung Warteschlange.
Beginnen Sie damit, alle Produzenten in einem Executor-Dienst zu platzieren und alle Verbraucher in einem anderen.
Wenn eine Kommunikation zwischen den Diensten erforderlich ist, verwenden Sie eine Blockierungswarteschlange. Zum Beispiel:
final ExecutorService producers = Executors.newFixedThreadPool(100); final ExecutorService consumers = Executors.newFixedThreadPool(100); while (/* has more work */) { producers.submit(...); } producers.shutdown(); producers.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS); consumers.shutdown(); consumers.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
Produzenten-Threads übermitteln Aufgaben direkt an Verbraucher-Threads, anstatt eine separate Blockierungswarteschlange für die Kommunikation zu verwenden. Dieser Ansatz vereinfacht die Implementierung und sorgt gleichzeitig für Parallelität und Effizienz.
Das obige ist der detaillierte Inhalt vonWie implementiert man Producer/Consumer-Threads mit einer Warteschlange?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!