java 线程设置优先级 的本质是什么?

解决方案 »

  1.   


    线程的优先级代表该线程的重要程度,
    当有多个线程同时处于可执行状态(就绪状态)哄抢CPU控制权时
    优先级能够使得优先级高的线程有更大的机会获得 CPU 控制权,优先级低的线程机会要小
      

  2.   

    java优先级的本质就是基本没用 而且不推荐使用优先级控制线程执行流程
      

  3.   

    不要用优先级控制线程执行顺序。这个优先级是OS依赖的。
    WIN 只有 7个优先级,而SUN solaris的有32个(好像)JAVA 里面定义了10级
    所以不同系统上的JVM会把这10级映射到OS的等级上。WIN因为10大于7 所以有些等级被映射到同一级。
    而且WIN有独特的线程等级推送机制,
    就是说不常执行的线程会慢慢自动提升优先级,以获得CPU执行。
    (记忆中如此,可能有不确切的地方)唯一能保证的是MAX 等级 一定高于 MIN 等级。总之不要用就对了。
      

  4.   

    有更大的几率抢到cpu,然后执行。
      

  5.   

    good!
    我这样总结下:也就是java语言层级所设置的线程其实最终的实现还是由操作系统去完成的,不同的操作系统,执行的结果会有差异。对吧?
    那么操作系统是如何管理和执行java的线程的呢?
      

  6.   


    对,JAVA线程会映射成本地线程,由操作系统调度CPU分时,或在多CPU环境下,调度CPU给他们。除非JVM在绿色线程模式下,那么所有的线程将由JVM模拟。
    经有人测试,一般绿色模式下,
    JVM会开两个本地线程,然后所有的JAVA线程都被分配给这两个本地线程执行。Solaris 还有LWP 具体参考http://java.sun.com/docs/hotspot/threads/threads.html我个人认为,获得JVM最佳执行效率应该还是在Solaris上,而不是WIN。
      

  7.   

    线程的优先级越高 抢到的cpu 执行权的机率 会越大.