So ändern Sie die Priorität eines Laufenden java-Prozess?

In einem stellt sich die Frage, erkundeten wir mit ProcessBuilder starten externer Prozesse mit niedriger Priorität unter Verwendung der OS-abhängigen Befehle. Ich entdeckte auch, dass wenn ein übergeordneter Prozess wird mit niedriger Priorität, dann alle seine Ableger Prozesse beginnen im niedrigen Priorität. So meine neue Frage ist die nach dem starten einer java-Datei (ausführen per Doppelklick auf die ausführbare jar-Datei in windows) in niedriger Priorität oder änderung seiner Priorität programmgesteuert während des Laufs. Ich habe versucht, die änderung der thread-Priorität, dies hat jedoch keine Auswirkung auf die windows Prozess Priorität.

Ich habe Folgendes versucht, aber es ändert nichts an der Priorität des Prozesses im task-manager

public class hello{
    public hello(){
        try{
            Thread.currentThread().setPriority(1);
            Thread.sleep(10000);    
        }catch(Exception e){e.printStackTrace();}
    }
}

Die einzige andere Sache, die ich denken kann, ist, starten Sie das Programm mit einer batch-Datei, aber ich würde lieber halten Sie diese in der Familie so zu sprechen. Also, kennt jemand eine java-basierte Methode zum ändern der aktuellen Prozess-Priorität? Im Idealfall wäre es schön zu können, ändern Sie die Priorität des Prozesses in Reaktion auf Benutzereingaben, während das Programm ausgeführt wird.

  • auf Un*x kann noch ein externer Prozess, um re-Nizza oder set CPU affinity etc. gesehen, dass dies geschehen kann von der Befehlszeile aus. Keine Ahnung, wie die Dinge funktionieren auf der Windows-Seite der Java-Teich, der sagte 🙂
  • in windows müssen Sie SetPriorityClass msdn.microsoft.com/en-us/library/ms686219%28v=vs.85%29.aspx können Sie aufrufen, von JNI/JNA oder einige cmd-line-Tool wie gilchrist.ca/jeff/SetPriority/index.html
  • danke, interessant. Macht es Sinn, in einer Weise: ich nehme es, dass die meisten API-Aufrufe werden kann "verpackt" in einem command-line utility, wenn/falls es nicht standardmäßig vorhanden ist. 🙂
  • keine Ahnung über die meisten, könnten einige benötigen, um ausgeführt zu werden, indem Sie den gleichen Prozess. Habe ich nicht getan WinAPI Zeug für ein Jahrzehnt (wie ich finde).
InformationsquelleAutor Andrew | 2011-06-04
Schreibe einen Kommentar