【问题标题】:Some questions about Java Threads and Process Priorities关于 Java 线程和进程优先级的一些问题
【发布时间】:2011-06-20 18:58:59
【问题描述】:

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

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

干杯

【问题讨论】:

标签: java windows multithreading unix


【解决方案1】:

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

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

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

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

相关问题/答案:

【讨论】:

  • 只是补充一点,这只会在Java虚拟机中的线程上设置优先级。您不能从操作系统级别影响线程优先级。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-25
    • 2011-04-18
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    相关资源
    最近更新 更多