5

FrageWas ist der effizienteste Weg, um zusätzliche Threads aus einem Thread zu erstellen?

Was ist der effizienteste Weg, um zusätzliche Threads aus einem Thread zu erstellen?

Kontext

Ich Redesign eine Anwendung effizienter zu sein. Eine der größten Verbesserungen wird das Ausführen gleichzeitiger Vorgänge sein; aber ich bin neu in der gleichzeitigen Programmierung. Das Szenario, das ich verbessern möchte, ist wie folgt:

Wir haben mehrere Marktplätze, um Aufträge zu importieren und dann in unser ERP-System hochzuladen. Jeder Marktplatz verfügt über mehrere zu importierende Datensatztypen. Derzeit wird dies wie MP->RT->RT->RT->RT getan, wo der Marktplatz (MP) aufgerufen wird, und als nachfolgende Datensatztypen() hinzugefügt werden.

Was will ich erreichen ist ein Fluss wie:

MP 
    |-> RT 
    |-> RT 
    |-> RT 
    |-> RT 
MP 
    |-> RT 
    |-> RT 
    ... 

die mehrere Marktplatz aufgerufen werden, und dann werden mehrere Datensatztypen gleichzeitig hinzugefügt.

Ich verwende derzeit eine executor service, die MP Aufgaben steuert, aber ich möchte den besten Weg kennen, um Aufgaben zu behandeln.

+2

Warum verwenden Sie nicht auch Executor-Service für RT-Task? – amicngh

+0

@amicngh Das ist eigentlich, was ich in Erwägung gezogen habe - ich bin nur unsicher, ob das Erstellen mehrerer Executor-Services der effizienteste Weg ist, Dinge zu tun. –

+0

Jede MP-Aufgabe behandelt eine Reihe von RT-Aufgaben, daher ist es besser, einen ThreadPool zu erstellen und eine RT-Aufgabe an diesen Pool zu senden. Jede Aufgabe wird erledigt. – amicngh

Antwort

6

Können Sie nicht jede RT-Aufgabe in einem ThreadPool (MT) einreichen und separat ausführen lassen?

Sie können mehrere Executors haben (ThreadPool ist einer unter den anderen, wählen Sie den, der am besten zu Ihren Bedürfnissen passt) oder nur einen, und jede RT-Task kann in ihnen abgelegt werden.

+1

Danke - Das stimmt damit überein, wie ich an das Problem gedacht habe (und basierend auf den Upvotes, wie andere es auch sehen). –

+0

Ich bin mir nicht sicher, ob ich deine Frage perfekt verstanden habe, aber das ist tatsächlich die erste und effizienteste Lösung, die mir in den Sinn kam. – Djon