线程正常Vs最大优先级

这个问题在这里已经有了答案:

  • Java线程优先级无效10个答案

  • 那是因为

    Thread.sleep(1000);
    

    如果您的更高优先级的线程处于睡眠模式,则任何其他线程都有机会执行它

    删除此块并检查“鲍勃作业”先完成。


    请参阅......系统中会有一个或多个处理器......现在,无论何时运行java程序,每个程序都将拥有自己的JVM实例。只要程序尝试做某件事,底层JVM就会使调用操作系统来实现它。JVM本身无法完成某些任务,只是将这些调用转发给操作系统。JVM无法控制所有内容......

    说了这些,回到你的问题,你已经分别将线程优先级设置为5和10 .. JVM“不执行线程”。 线程由调度程序(OS)调度,然后执行。 JVM可以直接告诉操作系统该线程的优先级很高,但最终还是留给操作系统来决定应该给线程多少优先级。 对于操作系统,JVM只是另一个需要资源的进程。


    提高优先级只会有助于

  • 您的CPU利用率接近100%,OS计划需要选择运行哪个线程。 这些天有很多免费的CPU,这是不太可能的
  • 并且您拥有root或管理员特权。
  • 你真的不在乎它是否总是有效。
  • 这种组合使得它们非常无用,不过是一种通常被忽略的暗示。 我会把它看作只是转储线程堆栈时可见的注释。

    大多数情况下,使用不太繁忙的线程比CPU拥有更好的解决方案。

    我对JVM的行为有点困惑

    在许多情况下,像这样,JVM只是将参数传递给操作系统,让它执行它的工作。 JVM所做的唯一事情是在转储线程时打印优先级。

    链接地址: http://www.djcxy.com/p/92055.html

    上一篇: Threads On Normal Vs Maximum Priority

    下一篇: How to wait for all threads to finish, using ExecutorService?