小编典典

Java线程优先级如何转换为OS线程优先级?

java

Java API线程优先级(1-10)如何转换为操作系统级别的优先级,因为大多数操作系统没有与此相匹配的线程优先级别(就数量而言)。

因此请记住,在某些情况下,具有不同优先级的两个或多个线程最终会在OS级别获得相同的优先级。

如果我的理解有需要更正,请澄清。


阅读 209

收藏
2020-10-09

共1个答案

小编典典

实际上,某些优先级可以映射到相同的“本地”优先级。这是列表(基于OpenJDK 6中的Hotspot代码):

Solaris

  • 1⇒0
  • 2⇒32
  • 3⇒64
  • 4⇒96
  • 5 – 10⇒127

值得注意的是,在Solaris上,您不能将线程优先级提高到高于正常水平,而只能将其降低:5的优先级值与任何更高的值相同。

Linux

  • 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
2020-10-09