Ich denke, Sie brauchen keine Alternative zu Multi-Threading, nur eine effizientere Thread-Implementierung.
QuasarfügtFasern (dh leichte Fäden) der JVM, von denen Sie sogar Millionen statt ein paar hundert erstellen können, so können Sie ohne auf den Faden Abstraktion die gleiche Leistung von Asynchron-Frameworks erhalten und regelmäßige imperative Kontrollflusskonstrukte (Sequenz, Schleifen usw.), die in der Sprache verfügbar sind.
Es vereint auch JVM/JDK Threads und seine Fasern unter einem gemeinsamen Strang Schnittstelle, so dass sie nahtlos zusammenarbeiten können, und stellt eine Portierung von java.util.concurrent
zu diesem einheitlichen Konzept. Dies bedeutet auch, dass Ihr Portierungsaufwand minimal ist (falls vorhanden).
Oben Stränge (entweder Fasern oder regelmäßige Themen) Quasar bietet auch vollwertiges Erlang-Stil Schauspieler (siehe here für einen Vergleich mit Akka), Sperrung Go-ähnliche Kanäle und Datenflussprogrammierung, Sie können also das parallele Programmierparadigma wählen, das Ihren Fähigkeiten und Bedürfnissen am besten entspricht, ohne dass Sie dazu gezwungen werden.
Es bietet auch Bindungen für beliebte und Standardtechnologien (als Teil des Comsat Projekt), so können Sie Ihren Code Vermögen zu bewahren, da die Portierung Aufwand minimal sein (falls vorhanden). Aus dem gleichen Grund können Sie sich auch einfach abmelden, wenn Sie möchten.
Derzeit Quasar hat Bindungen für Java 7 und , Clojure unter dem Pulsar Projekt und JetBrains' Kotlin. Basierend auf der JVM-Bytecode-Instrumentierung kann Quasar mit jeder JVM-Sprache arbeiten, wenn ein Integrationsmodul vorhanden ist, und es bietet Tools zum Erstellen zusätzlicher.
Beginnend mit Java9 erfolgt die Instrumentierung automatisch und es werden keine Integrationsmodule mehr benötigt.
Das grundlegende Missverständnis über Threads ist, dass je mehr desto besser. Dies ist im Allgemeinen nicht wahr, normalerweise ist das Gegenteil das, was Sie wollen: so wenige Threads wie Sie durchkommen können, nicht wesentlich mehr als die Anzahl der CPUs, die Sie haben. Selbst wenn Ihr Prozess E/A-gebunden ist und die meisten Ihrer Threads auf I/O warten, können Sie mit mehr Threads möglicherweise nichts kaufen, da dies die Systeme, mit denen Sie E/A arbeiten, verlangsamen kann. – biziclop
Verwenden Sie bereits einen Thread Pool? Ich hoffe, du erschaffst nicht direkt ein paar tausend Threads. –
Das heißt, Ihr Problem ist viel zu allgemein, um eine gute Antwort zu bekommen. Akka und Hadoop sind zwei sehr unterschiedliche mögliche Antworten, die zum Beispiel passen oder nicht passen können.Es ist jedoch auch möglich, dass die Verwendung eines Thread-Pools mit entsprechender Größe ausreicht. – biziclop