-4

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

+0

Was machst du mit all diesen Threads, genau? –

+2

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

+0

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

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