我有一个代码:
Thread thread = new Thread(new Runnable()
{
@Override
public void run()
{
//extremely time-consuming actions
}
});
thread.setPriority(Thread.MAX_PRIORITY);
thread.start();
该线程将执行一些耗时的操作,并且它也具有高优先级。
现在我想知道这个帖子在我的系统的所有其他程序中是否具有更高的优先级,或者它与相同程序的线程相比具有更高的优先级?
答案 0 :(得分:2)
优先级在流程中的线程内,而不是跨进程。 JVM甚至可能choose to ignore the priority,因此您甚至不能保证流程本身的优先级。
JVM为Java线程定义了十个逻辑优先级, 包括:
java.lang.Thread.MIN_PRIORITY = 1
java.lang.Thread.NORM_PRIORITY = 5
java.lang.Thread.MAX_PRIORITY = 10
将这些值[1..10]传递给Thread.setPriority(int)以进行赋值 Java线程的优先级。 Java线程的默认优先级是 NORM_PRIORITY。 (未明确调用setPriority的Java线程 在NORM_PRIORITY运行。)JVM可以自由地实现任何优先级 它选择的方式,包括忽略值。
答案 1 :(得分:1)
只有相同的程序 - 在VM本身。但这也不是保证,只是对VM的暗示。
答案 2 :(得分:0)
很难概括,因为它取决于底层平台。 Java线程优先级映射到OS线程优先级,通常没有一对一映射。一些平台提供从1到10的优先级。但Java只提供3个级别。
因此,操作系统有责任从应用程序处理具有相同优先级的所有线程,并且平等且公平地处理自己的线程。