Java优先级解决方法

时间:2014-05-05 19:22:23

标签: java multithreading thread-priority

我有一套非平凡的方法,最终会要求其中一个方法的结果。我希望并行运行所有方法,以便从中选择任何一个的答案将立即可用。

我知道每种方法被选中的概率,因此我想在方法并行运行时将这些概率反映在方法的优先级中。

我使用的操作系统忽略了我给线程的优先级,那么是否有一种解决方法可以确保以最高概率运行方法的线程将获得更多的CPU资源?

2 个答案:

答案 0 :(得分:1)

Thread类有setPriority方法。但它可能没什么大帮助,因为an article讨论了Java中的线程优先级,并在this answer中提到了什么优先级真正意味着依赖于操作系统。特别是文章指出

  

优先级和CPU分配之间没有任何关系

因为每个操作系统在线程调度中都有自己的特点。例如,要使线程优先级在Linux上运行,JVM应该以root身份运行,或者通过setuid设置root权限(根据同一篇文章)。

答案 1 :(得分:1)

也许你可以忽略线程优先级,并为每个单独的方法使用不同的ExecutorService -s。资源消耗计算。例如,您可以调用

 Executors.newFixedThreadPool(int)

其中int wolud反映被调用方法的概率(概率越大,分配的线程越多)。这当然意味着应该并行完成每一种方法的工作。

相关问题