有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JAVA中10个以上线程的多线程线程优先级

我知道线程的优先级可以从最小优先级(1)到最大优先级(10)不等。但是,如果要执行的线程超过10个,我将如何为它们分配优先级?优先级可以超过10吗


共 (3) 个答案

  1. # 1 楼答案

    不,你不能分配高于10的优先级,因为你的最大优先级是10,最小优先级是1。。即使u分配的优先级高于10,也可以将其视为默认优先级,程序将根据该优先级开始工作

  2. # 2 楼答案

    However, if I have more than 10 threads to execute, how will I assign [a different] priority to [each of] them ?

    你不能

    但这不重要。线程优先级很可能只会给你一个粗略的优先级排序。当然,javadocs并没有对线程优先级如何(甚至是否)影响线程调度给出任何有力的保证

    现代JVM上线程调度和线程优先级的实际实现是由操作系统的线程调度器完成的。Java Thread优先级实际上只不过是操作系统的“提示”

    底线是,依赖线程优先级来实现正确行为的Java应用程序可能不可靠,如果在与您最初开发/调试的平台不同的平台上运行,则其行为可能不同/不正确。你永远不应该依赖优先权来获得正确的行为。使用提供的同步原语确保事情按要求的顺序发生


    如果需要线程优先级的精确行为,则需要使用运行在“实时操作系统”之上的“实时Java”JVM

  3. # 3 楼答案

    javadoc声明了以下关于^{}

    Throws:

    IllegalArgumentException - If the priority is not in the range MIN_PRIORITY to MAX_PRIORITY.

    根据实现的不同,您需要指定一个适当的值您将无法使用Thread进行更精细的优先级设置