0

我们知道,如果我们执行该getcurrentthread.priority方法,我们将获得线程优先级为 5。对于优先级高于 Main 方法的线程,我无法得到答案。

4

3 回答 3

1

我假设您的意思是这在某种程度上是优先级队列中线程的索引,因此必须至少存在 4 个其他线程。
好吧,事实并非如此,它不是索引,而是用于将其优先级与其他并发线程进行比较的值,不仅在您的 VM 中,而且在您的系统中。事实上,线程可以具有相同的优先级。

旁注:在线程上设置优先级时,始终使用常量 MIN_PRIORITY和。如果您需要中间值,请使用常量计算它们:NORM_PRIORITYMAX_PRIORITY

int mediumHighPriority = (Thread.NORM_PRIORITY+Thread.MAX_PRIORITY)/2;

如果您使用常量而不是它们的值,则常量值将来可能会发生变化(可能有更宽的范围,甚至可以颠倒以使较低的数字等于较高的优先级,或者 NORM_PRIORITY 可能会变得更低或更高)在保存方面,代码变得更加清晰。

于 2013-08-28T08:03:39.823 回答
0

当一个java应用程序启动时,JVM创建主线程组作为系统线程组的成员,并将优先级设置为默认值(即NORM_PRIORITY)。

这仅适用于当前 Java 程序中的线程,并且不会提供有关在操作系统中其他进程中运行的所有其他线程的任何信息。

于 2013-08-28T08:06:45.793 回答
0

您可以通过ThreadGroup枚举当前程序中的所有线程,例如参见this answer

于 2013-08-28T07:58:33.310 回答