2017-07-04 5 views
1

Wie N (N> 100) Anfrage pro Sekunde senden, URL in Java angeben? Ich verwende ExecutorService und CountDownLatch dafür.Java, senden mehrere get Anfrage pro Sekunde

Aber das Erstellen neuer Thread für jede Anfrage ist nicht gute Praxis, nicht wahr? Wenn ich 500 asynchrone Anfrage pro Sekunde senden muss, muss ich 500 Threads erstellen. Ist das der richtige Weg, um es zu lösen, oder gibt es andere Lösungen?

Antwort

0

Mit 500 Threads wäre schlechte Praxis, weil es unnötigen Aufwand für den Kontextwechsel zwischen Threads, nicht zu erwähnen den Initialisierungsaufwand beim Erstellen von 500 Threads.

Denken Sie daran, dass die Anzahl der Threads, die parallel ausgeführt werden können, durch die Anzahl der verfügbaren Prozessoren (d. H. Runtime.getRuntime().availableProcessors()) begrenzt ist. Wenn Ihr Computer also über 8 Prozessoren verfügt, ist es nicht sinnvoll, mehr als 8 Worker-Threads zu erstellen.

Für die tatsächliche Ausführung der Arbeit ist dies ein Cookie Cutter Worker Queue-Szenario. Hier können Sie die Anzahl der Worker-Threads entsprechend der Anzahl der verfügbaren Prozessoren erstellen und jeden Worker-Thread Arbeitsabschnitte ausführen lassen, bis die gesamte Arbeit abgeschlossen ist (verfolgt von einem AtomicInteger oder etwas Ähnlichem)