使用此代码:
public static void main(String[] args) throws InterruptedException {
MyThread testThread = new MyThread();
System.out.println(testThread.getPriority());
testThread.start();
System.out.println(testThread.getPriority());
testThread.setPriority(7);
System.out.println(testThread.getPriority());
}
我得到一个setpriority按预期工作的输出-输出是5-5-7。但在评论最重要的getpriority时,如下所示:
public static void main(String[] args) throws InterruptedException {
MyThread testThread = new MyThread();
//System.out.println(testThread.getPriority());
testThread.start();
System.out.println(testThread.getPriority());
testThread.setPriority(7);
System.out.println(testThread.getPriority());
}
优先级根本没有改变,我得到的输出是5-5。为什么会这样?是什么决定了线程优先级是否改变?
1条答案
按热度按时间olqngx591#
如果更改已经运行的线程的优先级,则没有任何效果。例如:
运行此命令将显示
testThread.setPriority(8);
没有效果,线程不再活动。如果我们转到您的示例并添加两个语句:
运行代码时有没有这个
System.out.println(testThread.getPriority());
-您将看到在一种情况下(当该行被注解时),线程不是alive
再也没有了(不像那行没有注解的时候)。从而达到了预期的效果。