“让我们继续我们的课程。什么是线程优先级以及为什么需要它们?
“在现实世界的问题中,不同线程正在执行的工作的重要性可能相差很大。线程优先级的概念是为了控制这个过程而创建的。每个线程都有一个优先级,由 1 到 10 之间的数字表示。”
“10是最高优先级。”
“1是最低的。”
“如果没有给出优先级,则线程获得优先级 5(正常)。”
线程的优先级不会显着影响它的工作,而是更多的建议。如果有多个休眠线程需要运行,Java机器会先启动一个优先级高的线程。
“Java 机器按照它认为合适的方式管理线程。低优先级的线程不会闲置。它们只会收到比其他线程更少的执行时间,但它们仍会被执行。”
“在大多数情况下,线程总是以相同的优先级执行。试图给一个线程比其他线程更多的线程通常表明程序中存在架构问题。”
“哇哦。而且我已经梦想为我的线程分配最高优先级,这样它们就能做 10 倍的事情。”
“事实证明,这里的情况已接近尾声:具有高优先级的线程可以而且将会工作得更多,但也许不会——无法保证。”
“说吧,我如何改变线程的优先级?”
“非常简单。Thread 类有两个方法:”
方法 | 描述 |
---|---|
|
设置新的优先级 |
|
返回当前线程优先级 |
“Thread 类也有三个常量:”
公共最终静态 int MIN_PRIORITY = 1;
public final static int NORM_PRIORITY = 5;
public final static int MAX_PRIORITY = 10;
“让我猜猜。MIN_PRIORITY 是最低优先级,MAX_PRIORITY 是最高优先级,NORM_PRIORITY 是默认优先级?”
“是的,完全正确。你可以编写分配最高线程优先级的代码。”
“这里有什么诡计吗?像这样的东西?”
Thread thread = new MyThread();
thread.setPriority(Thread. MAX_PRIORITY)
thread.start();
“没错。没什么复杂的,对吧?”
“是的。你可以在线程启动后设置/更改优先级吗?还是像 setDaemon,你必须在线程启动之前设置值?”
“线程启动后可以更改优先级。正如我已经说过的,这不会导致任何显着变化。”
“好吧,这是一个小而有趣的话题。谢谢,艾莉。”
GO TO FULL VERSION