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

跨平台更改Java进程优先级的方法

太叔昊苍
2023-03-14
问题内容

我需要在与另一个Java应用程序分开的JVM中调用.jar文件,它非常占用CPU,因此应以后台优先级运行,以免影响系统的其余部分。有没有跨平台的方法可以做到这一点?


问题答案:

简单的答案是,没有可移植的方法来更改Java中进程的优先级。(线程-是,进程-否。)

如果您的Java应用程序需要启动一个新的JVM来运行CPU密集型应用程序,那么很可能它不是完全可移植的。例如,通常需要提供java命令的路径名(或等效项),-cp参数(或等效项),系统特定的JVM选项,等等。

因此,假设启动JVM的命令已经不可移植,那么用一个包装程序脚本替换该命令就无关紧要,该脚本执行特定于OS的操作来更改启动进程的优先级。(例如,对于UNIX或Linux,您可以仅使用它nice来启动JVM。)



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

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

  • Linux 是一个多用户、多任务的操作系统,系统中通常运行着非常多的进程。但是 CPU 在一个时钟周期内只能运算一条指令(现在的 CPU 采用了多线程、多核心技术,所以在一个时钟周期内可以运算多条指令。 但是同时运算的指令数也远远小于系统中的进程总数),那问题来了:谁应该先运算,谁应该后运算呢?这就需要由进程的优先级来决定了。 另外,CPU 在运算数据时,不是把一个集成算完成,再进行下一个进程的运

  • 在安卓系统中:当系统内存不足时,Android系统将根据进程的优先级选择杀死一些不太重要的进程,优先级低的先杀死。进程优先级从高到低如下。 前台进程 处于正在与用户交互的activity 与前台activity绑定的service 调用了startForeground()方法的service 正在执行oncreate(),onstart(),ondestroy方法的 service。 进程中包含正

  • 主要内容:1 什么是Java 线程优先级,2 Thread类线程优先级常量,3 Java 线程优先级的例子1 什么是Java 线程优先级 每个线程都有一个优先级。优先级由1到10之间的数字表示。在大多数情况下,线程计划会根据线程的优先级来调度线程(称为抢先式调度)。但是不能保证一定被调用,因为是否被调用取决于JVM选择谁来调度。 2 Thread类线程优先级常量 public static int MIN_PRIORITY public static int NORM_PRIORITY publ

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