有关Java线程和进程优先级的一些问题

我有一个关于线程的小问题。 在Unix系统上,我们nice ,可以用来设置优先级进程。 好的,在我的系统中,我调用了一些外部进程,但是我想为它们设置优先级。 在unix中,我可以调用其他ProcessBuilder并设置好我想要的进程,但在Windows中,这是不可能的。

如果我以某种优先级启动一个线程,并在ProcessBuilder中使用它,进程将具有与线程相同的优先级? 还是有其他的方法来做到这一点?

干杯

没有办法在Java中设置进程( Process )级别的优先级。

如果我以某种优先级启动一个线程,并在其中使用ProcessBuilder ,则进程将具有与线程相同的优先级? 还是有其他的方法来做到这一点?

该进程将与JVM并行运行,因此不会继承线程的优先级。 它将由操作系统自己安排。

如上所述,没有内置的调整进程优先级的跨平台方式,但是有一个Thread.setPriority(int) 。 所以也许你可以通过外部程序在单独的线程中完成工作 (而不是开始一个新的进程),并在这个线程上使用setPriority方法。

相关的问题/答案:

  • 跨平台的方式来改变java进程的优先级
  • 如何改变正在运行的java进程的优先级?

您可以编写一个C / C ++ DLL并导出一个调用SetPriorityClass的JNI函数

你可以在你的java代码中使用它