gpt4 book ai didi

java - 在 Java 中使用 JNI 调用更改线程优先级

转载 作者:行者123 更新时间:2023-11-30 07:27:19 28 4
gpt4 key购买 nike

我正在尝试编写一个小测试,我正在尝试更改 Java 线程的优先级以将其设置为我的 Scientific Linux 机器上的实时属性。

我认为这需要使用 JNI 调用来完成,因为使用 Thread.MAX_PRIORITY 或 Thread.MIN_PRIORITY 永远不会将其映射到实时优先级。

我对如何从我的 native 代码访问我的 Java 线程感到困惑。以下是我的java程序:

public class ThreadPriorityTest implements Runnable {

public static int numThreads;

public void run() {
System.out.println("***Java: Changing thread priorities");
changePriority();
}

public static synchronized native void changePriority();

public static void main(String[] args) {
if(args.length != 1) {
System.out.println("Usage: ThreadPriorityTest <num_of_threads>");
System.exit(0);
}

numThreads = Integer.parseInt(args[0]);

for(int i = 0; i < numThreads; i++) {
Thread t = new Thread(new ThreadPriorityTest());
t.start();
}
}

}

最佳答案

How can i get access to my java thread from my native code?

当您通过 JNI 从 Java 跳转到 native 时,没有线程切换。一旦进入 native 代码,当前线程与跳转之前执行的操作系统线程相同。在 native 代码中对当前线程做任何您想做的事。如果您需要测试以查看您的更改是否持续存在,请在 JNI 返回以运行任何更改检查程序后跳回 native 。

关于java - 在 Java 中使用 JNI 调用更改线程优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9793056/

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