Java API线程优先级(1-10)如何被转换为操作系统级别的优先级,因为大多数操作系统不具有与之匹配的线程优先级(以数字表示).
所以记住,如果两个或多个具有不同优先级的线程最终在OS级别获得相同的优先级,那么会有一种情况.
请澄清一点,如果我有一些修正我的理解.
解决方法
事实上,一些优先级别可以映射到相同的“本机”优先级.这是列表(基于OpenJDK 6中的Hotspot代码):
的Solaris
> 1⇒0@H_403_13@> 2⇒32@H_403_13@> 3⇒64@H_403_13@> 4⇒96@H_403_13@> 5 – 10⇒127
值得注意的是,在Solaris上,您不能将线程优先级提高到正常值以下,只能将其优先级更低:5的优先级值与任何较高的值相同.
> 1 – 10⇒4 – -5(不错的值)
值得注意的是,在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