Ich habe ein Programm, das Tausende von Threads spinnt. Ich verwende derzeit einen Host für alle Threads, der viel Zeit in Anspruch nimmt. Wenn ich mehrere Hosts (z. B. 10 Hosts mit jeweils 100 verschiedenen Threads) verwenden möchte, wie soll ich fortfahren?Ausführen eines Multithread-Programms mit mehreren Hosts
-4
A
Antwort
0
Tausende von Threads auf einer einzelnen JVM zu haben klingt nach einer schlechten Idee - Sie können die meiste Zeit mit dem Kontextwechsel verbringen, anstatt die eigentliche Arbeit zu erledigen.
Um Ihre Arbeit auf mehrere Hosts aufzuteilen, können Sie keine Threads verwenden, die von einer einzelnen JVM verwaltet werden. Sie müssen für jeden Host eine API verfügbar machen, die einen Teil der Arbeit erhalten und das Ergebnis der geleisteten Arbeit zurückgeben kann.
Ein Ansatz wäre, Java RMI (Remote-Methode Aufruf), um diese Aufgabe abzuschließen, aber wirklich, Ihre Frage fehlt so viele Details wichtig für die Entscheidung, welche Architektur zu wählen.
0
Creating 1000 threads in on JVM is very bad design and need to minimise count.
High thread count will not give you multi-threading benefit as context switching will be very frequent and will hit performance.
If you are thinking of dividing in multiple hosts then you need parallel processing system like Hadoop /Spark.
They internally handles task allocation as well as central system for syncing all hosts on which threads/tasks are running.
Verwandte Themen
- 1. Aufgaben auf mehreren Hosts in einem Playbook ausführen
- 2. WireMock mit mehreren Hosts und Dnsmasq?
- 3. FeathersJS auf Server mit mehreren Hosts
- 4. Ansible: Rolle nur für einige Hosts ausführen
- 5. Ausführen eines Befehls auf mehreren Windows-Servern
- 6. Ausführen eines Sikuli-Skripts in mehreren Computern
- 7. Ausführen eines Powershell-Skripts auf mehreren Servern mit Jenkins
- 8. Python: Subprozess und Ausführen eines Bash-Skripts mit mehreren Argumenten
- 9. Python-Skript: Ausführen eines Skripts mit mehreren Argumenten subprocess
- 10. Einrichten eines eckigen Projekts mit puppphet, Erstellen eines virtuellen Hosts
- 11. wie verbinden mit mehreren Hosts/Datenbanken in Laravel
- 12. Ausführen von mehreren Threads
- 13. SQL-Abfrage mit mehreren Parametern ausführen
- 14. Ausführen von VNC Vollbild mit mehreren Monitoren
- 15. Ausführen von Testmethoden mit mehreren gleichzeitigen Threads
- 16. Ausführen von Integrationstests mit mehreren Zielplattformen
- 17. Problem mit virtuellen Hosts
- 18. Ausführen von Funktionen auf mehreren Untergruppen innerhalb eines data.frame (R)
- 19. Derby Network Server - Akzeptiert Verbindungen von mehreren Hosts - derby.drda.host
- 20. Ausführen von mehreren Python-Version
- 21. Pt-Online-Schema-Änderung über mehrere Hosts hinweg ausführen
- 22. Tabellenfunktion in mehreren Zeilen ausführen?
- 23. Befehl in mehreren Verzeichnissen ausführen
- 24. Schleife durch Hosts mit ansible
- 25. Distcc .distcc/zeroconf/Hosts enthalten keine Hosts
- 26. Schaffung eines jQuery-Plugin mit mehreren Funktionen
- 27. Fabric Fehler beim Verbinden mit mehreren Hosts mit SSH-Config-Datei & RSA-Schlüssel
- 28. file_get_contents() ignoriert Hosts
- 29. Ausführen eines verteilten Spark Job Servers mit mehreren Arbeitern in einem eigenständigen Spark-Cluster
- 30. Ausführen eines Ignite-Clusters
Was machst du mit all diesen Threads, genau? –
Ich denke, die Frage ist zu breit. Haben Sie über einige Ideen nachgedacht? Kannst du etwas mehr über die Art der Arbeit erzählen, die du machst? – zuckermanori
Wenn Sie in einem solchen Umfang rechnen müssen, beginnen Sie mit der Entwicklung von Technologie für solche Anforderungen: wie Hadoop, Spark/Storm ... Aber natürlich ist Ihre Frage viel zu weit gefasst! – GhostCat