当前位置: 首页 > 面试题库 >

如何更改正在运行的Java进程的优先级?

姜杜吟
2023-03-14
问题内容

在一个相关的问题中,我们探索了使用ProcessBuilder使用依赖于OS的命令以低优先级启动外部进程的问题。我还发现,如果父进程的优先级较低,则其所有生成的进程都将以低优先级启动。因此,我的新问题是关于以低优先级启动Java文件(通过双击Windows中的可执行jar运行)或在运行过程中以编程方式更改其优先级。我尝试更改线程优先级,但这对Windows进程优先级没有影响。

我已经尝试了以下操作,但是它不会更改任务管理器中的进程优先级

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

我唯一想到的另一件事是使用批处理文件运行该程序,但是可以这么说,我宁愿将其保留在家族中。有人知道基于Java的方法来更改当前进程优先级吗?理想情况下,能够在程序运行时响应用户输入来更改进程的优先级会很好。


问题答案:

如何在Windows中更改线程的优先级。我不知道有任何JavaAPI可以执行此操作,因此您将不得不依靠JNI来调用Windows
API。我想我会从JNA开始,它可以让您轻松地映射功能,或者找到一个现成的Java包装器到API(如果有)。



 类似资料:
  • 问题内容: 我需要在与另一个Java应用程序分开的JVM中调用.jar文件,它非常占用CPU,因此应以后台优先级运行,以免影响系统的其余部分。有没有跨平台的方法可以做到这一点? 问题答案: 简单的答案是,没有可移植的方法来更改Java中进程的优先级。(线程-是,进程-否。) 如果您的Java应用程序需要启动一个新的JVM来运行CPU密集型应用程序,那么很可能它不是完全可移植的。例如,通常需要提供j

  • 问题内容: 我有一个Python程序,它执行耗时的计算。由于它使用高CPU,并且我希望系统保持响应状态,因此我希望程序将其优先级更改为低于正常值。 我发现了这一点: 在Windows中设置进程优先级- ActiveState 但我正在寻找一种跨平台的解决方案。 问题答案: 这是我用来将进程设置为低于正常优先级的解决方案: 在Windows和Linux上的Python 2.6上进行了测试。

  • 问题内容: 我有一个脚本,可以导出环境变量并启动一些下标。 可用于下标中的进程开头。如何更改环境变量? 我试图用设置变量,但是那不起作用。 问题答案: 通常,您只能在流程启动时影响流程的环境变量。如果您需要将更改传达给正在运行的流程,则环境不是正确的工具。 编辑该问题的目的是为了补充讨论中的问题:将偶尔更改的设置传达给正在运行的进程的一种相当不错的方法是指定一个配置文件,在该文件中设置LOGLEV

  • 使用此代码: 我得到一个setPriority按预期工作的输出--输出是5-5-7。但当注释出最重要的getPriority时,如下所示: 优先级没有任何改变,我得到5-5的输出。为什么会这样?是什么决定了线程的优先级是否被更改?

  • 我现在根据我的算法更改任务优先级,我想将这些任务交给虚拟机,我如何在cloudsim中完成?

  • 问题内容: 我正在尝试使用来使用排序对象。 这很容易实现,但是对象类变量(比较器用来计算优先级)在初始插入后可能会更改。大多数人提出了一种简单的解决方案,即删除对象,更新值并再次将其重新插入,因为这是优先级队列的比较器投入使用的时候。 除了围绕PriorityQueue创建包装器类之外,还有其他更好的方法吗? 问题答案: 你必须删除并重新插入,因为队列的工作原理是在插入新元素时将它们放置在适当的位