如何将Java API线程优先级(1-10)转换为OS级别优先级,因为大多数操作系统没有与此匹配的线程优先级(就数字而言).
因此,请记住,当两个或多个具有不同优先级的线程最终在操作系统级别获得相同的优先级时,是否会出现这种情况.
请澄清,如果我的理解有一些纠正.
实际上,某些优先级可以映射到相同的"本机"优先级.这是列表(基于OpenJDK 6中的热点代码):
1⇒0
2⇒32
3⇒64
4⇒96
5 - 10⇒127
值得注意的是,在Solaris上,您不能将线程优先级提高到正常范围以上,只能降低它:5的优先级值与任何更高的值相同.
1 - 10⇒4 - -5(nice
值)
值得注意的是,在Linux上,Java中的不同线程优先级确实映射到本机级别的不同优先级值.
1 - 2⇒ THREAD_PRIORITY_LOWEST
3 - 4⇒ THREAD_PRIORITY_BELOW_NORMAL
5 - 6⇒ THREAD_PRIORITY_NORMAL
7 - 8⇒ THREAD_PRIORITY_ABOVE_NORMAL
9 - 10⇒ THREAD_PRIORITY_HIGHEST