Java-Bibliothek zur Verwaltung eines Prozesspools

8

Ich arbeite an einem Java-Daemon, der Parallelität erfordert: eine Endlosschleife, die eine Jobwarteschlange überwacht ( redis ) und jeden Job an einen Worker verteilt . Der Arbeiter muss nicht unbedingt einen Wert zurückgeben.

Ich fand Executors sehr nützlich und verwende einen ThreadPoolExecutor , um eine Anzahl von Worker-Threads zu verwalten.

Obwohl diese Mitarbeiter Code von Drittanbietern ausführen, der möglichst isoliert ausgeführt werden muss, vermeiden Sie die Freigabe statischer Eigenschaften.

Meine Frage: Gibt es eine Java-Bibliothek / ein Java-Framework, das ähnliche Funktionen wie Executors bietet, zB:

  • Arbeitspool
  • automatisch angepasste Poolgröße

.. aber Prozesse anstelle von Threads erzeugen?

    
dimi 24.04.2012, 19:02
quelle

3 Antworten

6

Bearbeiten:

Nun verstehe ich, dass Sie Bibliotheken von Drittanbietern haben, die Sie irgendwie isoliert ausführen möchten - also haben sie beispielsweise keinen Zugriff auf statische Variablen.

Ich würde Ihre Aufgaben in einem anderen ClassLoader ausführen. Es gibt Web-Frameworks, die diesen Mechanismus verwenden, um Webanforderungen zu isolieren. Das Übergeben von Daten zwischen den Klassenladern ist ein bisschen schwierig. Ich bin mir nicht sicher, wie Jetty es macht. Vielleicht mit einer Steckdose? Hier ist ein interessanter Artikel über die Verwendung von System.out zum Teilen von Objekten . Sicherlich ein Hack.

  

Meine Frage ist: Gibt es eine Java-Bibliothek / ein Java-Framework, das ähnliche Funktionen wie Executors bietet, aber Prozesse anstelle von Threads hervorbringt?

Moderne Betriebssysteme verwenden moderne Multi-Prozessor-Architekturen, um Java-Threads optimal zu nutzen. Wenn ein anderer Thread innerhalb des aktuellen Prozesses erstellt wird, wird er auf einem anderen Prozessor ausgeführt, sofern er verfügbar ist, und er wird viel effizienter sein, als wenn er diese Aufgabe in einem komplett separaten Prozess ausführt, insbesondere in einem so schweren Prozess wie einem anderen JVM-Prozess.

>     
Gray 24.04.2012, 19:05
quelle
1

Es gibt ein Projekt in github, um einen Prozesspool zu erstellen. Guck mal. Ссылка

    
SVN 12.06.2015 13:26
quelle
0

Haben Sie schon einmal daran gedacht, mit dem ProcessBuilder Ihren isolierten Prozess zu verwalten?

%Vor%

Ich weiß nicht, ob es sinnvoll ist, ausführbare Aufgaben zu übermitteln, die Unterprozesse an einen Executor verwalten, aber es kann eine Lösung sein, Ihre Mitarbeiter zu isolieren.

    
Bertil Chapuis 25.04.2012 07:15
quelle