Plattformübergreifende Möglichkeit, die Java-Prozesspriorität zu ändern

8

Ich muss JAR-Datei in separater JVM von einer anderen Java-Anwendung aufrufen, und es sehr CPU-aufwändig, so sollte es mit Hintergrundpriorität ausgeführt werden, um den Rest des Systems nicht zu beeinflussen. Gibt es dafür eine plattformübergreifende Methode?

    
gordon-quad 19.05.2010, 12:52
quelle

2 Antworten

3

Die einfache Antwort ist, dass es keine portable Möglichkeit gibt, die Priorität eines Prozesses in Java zu ändern. (Threads - ja, Prozesse - Nr.)

Wenn Ihre Java-Anwendung eine neue JVM zum Ausführen der CPU-intensiven Anwendung starten muss, besteht die Möglichkeit, dass sie nicht vollständig portierbar ist. Beispielsweise müssen Sie normalerweise den Pfadnamen des Befehls java (oder gleichwertig), ein Argument -cp (oder gleichwertig), systemspezifische JVM-Optionen usw. angeben.

Angenommen, der Befehl zum Starten der JVM ist bereits nicht portierbar, sollte es kaum von Belang sein, wenn Sie den Befehl durch ein Wrapper-Skript ersetzen, das betriebssystemspezifische Dinge ausführt, um die Priorität zu ändern der gestartete Prozess. (Für UNIX oder Linux können Sie einfach nice verwenden, um die JVM zu starten.)

    
Stephen C 19.05.2010, 14:47
quelle
1

Ich weiß nicht, wie ich die Priorität für einen externen Prozess festlegen soll. Thread hat jedoch eine setPriority -Methode. Wenn Sie also die Zielanwendung steuern, könnten Sie vielleicht einen Schalter hinzufügen, der der Anwendung sagt, dass sie ihre eigene Priorität auf Minimum setzen soll:

theThread.setPriority(Thread.MIN_PRIORITY);

Wenn es immer noch Auswirkungen auf das System hat, schlage ich vor, dass Sie einige kurze sleep ing verschachteln, um die CPU zu entladen.

Eine andere Option:

Wenn Sie das Ziel .jar in den Klassenpfad der "initiierenden" Anwendung setzen, können Sie einfach die main -Methode der jar-Datei in einem neu erstellten Thread aufrufen und dann die Priorität mit der obigen Einstellung festlegen Methode. (Dies sollte funktionieren, auch wenn Sie den Quellcode der Ziel-JAR-Datei nicht kontrollieren.)

    
aioobe 19.05.2010 14:09
quelle

Tags und Links