我有一组不平凡的方法,最终将请求其中一个方法的结果。我想并行运行所有方法,以便立即获得所选方法的答案。
我知道每种方法被选择的概率,因此我想在方法并行运行时将这些概率反射(reflect)在方法的优先级中。
我使用的操作系统忽略了我给予线程的优先级,因此是否有解决方法来确保以最高概率运行该方法的线程将获得更多的 CPU 资源?
最佳答案
Thread类有setPriority方法。但这可能没有太大帮助,因为根据 an article其中讨论了 Java 中的线程优先级,并在 this answer 中提到。优先级的真正含义取决于操作系统。文章特别指出
there's no relation per se between priority and CPU allocation
因为每个操作系统在线程调度方面都有自己的特殊性。例如,要使线程优先级在 Linux 上工作,JVM 应该以 root 身份运行或通过 setuid 设置 root 权限(根据同一篇文章)。
关于Java 优先级解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23480146/