2012-03-29 13 views
3

Ich muss eine ausführbare JAR-Datei in mehreren Threads/Kernen ausführen. Die JAR-Datei implementiert Runnable nicht. Ich habe nach einer Möglichkeit gesucht, das zu tun und habe keine gefunden. Ist es möglich, dass eine JAR-Datei mehrere Threads/Kerne verwendet, ohne Zugriff auf den Quellcode zu haben?Wie führe ich eine JAR-Datei in mehreren Threads aus?

Derzeit. Wenn ich die JAR-Datei nur normal ausführe, wird nur ein einzelner Kern verwendet.

+2

Jar-Dateien enthalten Java-Klassen und andere Ressourcen. Ein Jar ist keine Java-Klasse und kann daher "Runnable" nicht implementieren. Bitte bearbeiten Sie Ihre Frage und machen Sie einen Schritt zurück und geben Sie Hintergrundinformationen zu dem, was Sie erreichen möchten. – Gray

Antwort

8

Es gibt keine Möglichkeit, ein Programm magisch zu machen (egal, ob es in einer Java JAR-Datei oder auf andere Weise verpackt ist) automatisch mehrere Kerne verwenden. Das Programm muss geschrieben worden sein, um mehrere Kerne zu verwenden - es gibt keinen anderen Weg.

3

Nein, das geht nicht. Sie können mehrere java-Prozesse ausführen, die dieselbe JAR in verschiedenen Threads ausführen. Dies ist jedoch möglicherweise nicht das, was Sie möchten.

1

Wenn das Jar ein ausführbares Jar ist, dann hat es eine Hauptmethode (die Hauptklasse ist im Manifest der Jar-Datei aufgeführt). Sie können diese Hauptmethode in Ihrer eigenen Runnable-Instanz aufrufen.

Wenn jedoch die Klassen in diesem Jar statische Ressourcen ohne entsprechende Synchronisierung verwenden, wird diese Strategie nicht funktionieren. Wenn dies der Fall ist, können Sie einen separaten ClassLoader pro Runnable einrichten und jede Instanz von jar in einem eigenen isolierten ClassLoader ausführen (Sie müssten dann die Hauptmethode mithilfe von reflection aufrufen).

Verwandte Themen