我知道线程可以具有从MIN_PRIORITY(1)到MAX_PRIORITY(10)的优先级。但是,如果我要执行10个以上的线程,我将如何为它们分配优先级?优先级可以超过10吗?
答案 0 :(得分:8)
但是,如果我要执行超过10个线程,我将如何为[每个]分配[不同的]优先级?
你不能。
但是没关系。很可能线程优先级只会给你一个粗略的优先级。当然,javadocs不会对线程优先级如何(或者甚至是否)影响线程调度提供任何强有力的保证。
现代JVM上线程调度和线程优先级的实际实现由操作系统的线程调度程序完成。 Java Thread
优先级实际上只不过是对操作系统的“暗示”。
最重要的是,依赖于线程优先级以获得正确行为的Java应用程序可能不可靠,并且如果在与最初开发/调试的平台不同的平台上运行,则表现出不同/不正确的行为。您永远不应该依赖优先级来做出正确的行为。使用提供的同步原语来确保按要求的顺序发生。
如果您需要线程优先级的精确行为,则需要使用在“实时操作系统”之上运行的“实时Java”JVM。
答案 1 :(得分:2)
javadoc声明了以下关于setPriority(int)
抛出:
IllegalArgumentException - 如果优先级不在范围内 MIN_PRIORITY到MAX_PRIORITY。
根据实施情况,您需要指定适当的值。 您将无法使用Thread
进行更精细的优先级设置。
答案 2 :(得分:0)
没有你不能分配超过10的优先级,因为你的最大优先级是10而最小优先级是1 ..但是如果你指定优先级高于10,它可以被视为默认优先级并且程序开始按照优先级工作。