gpt4 book ai didi

java - 设置运行在linux上的Java程序的nice值

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:31 25 4
gpt4 key购买 nike

我希望我的 Java 程序降低它的优先级,这样它就不会压垮系统。我最初的想法是使用 Thread.currentThread().setPriority(5) 但这似乎只是它在 JVM 中的优先级。

然后我想也许我会调用它并调用系统命令,但是 Thread.getId() 也仅仅是 JVM 的 id,所以我什至不知道要传递什么进程 id到 renice

Java 程序有什么方法可以做这样的事情吗?

最佳答案

由于我们必须以依赖于平台的方式进行操作,因此我从 java 运行一个 shell 进程并重新指定其父进程。父进程恰好是我们的 java 进程。

import java.io.*;

public class Pid
{
public static void main(String sArgs[])
throws java.io.IOException, InterruptedException
{
Process p = Runtime.getRuntime().exec(
new String[] {
"sh",
"-c",
"renice 8 `ps h -o ppid $$`"
// or: "renice 8 `cat /proc/$$/stat|awk '{print $4}'`"
}
);
// we're done here, the remaining code is for debugging purposes only
p.waitFor();
BufferedReader bre = new BufferedReader(new InputStreamReader(
p.getErrorStream()));
System.out.println(bre.readLine());
BufferedReader bro = new BufferedReader(new InputStreamReader(
p.getInputStream()));
System.out.println(bro.readLine());
Thread.sleep(10000);
}
}

顺便说一句:你是 jEdit 的 Brad Mace 吗?很高兴认识你。

关于java - 设置运行在linux上的Java程序的nice值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12065142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com