您的位置:首页 > 其它

如何理解线程的优先级?

2020-07-14 06:31 330 查看

1.特点?

1.线程的优先级为1-10,一般使用Thread的类常量,不会手动赋值
public static final int MIN_PRIORITY = 1;-----最低优先级
public static final int NORM_PRIORITY = 5;-----普通优先级
public static final int MAX_PRIORITY = 10;------最高优先级
2.在线程的优先级没有特殊指定时,默认都为普通优先级【NORM_PRIORITY = 5】;
3.thread.setPriority()用来设定线程的优先级;
4.线程优先级具有继承性。a线程启动b线程,b线程的优先级和a线程的优先级是一样的;
5.线程具有规则性:
高优先级的线程总是大部分先执行完,并不是高优先级的完全先执行完。线程的优先级和执行顺序无关。出现这样的结果证明mythread2的优先级是最高的,说明线程的优先级具有一定的规则性,cpu尽量将执行资源让给优先级比较高的线程。

2.应用场景?

设置线程优先级时,针对频繁阻塞(休眠或者 I/O 操作)的线程需要设置较 高优先级,而偏重计算(需要较多CPU 时间或者偏运算)的线程则设置较低的 优先级,确保处理器不会被独占。在不同的JVM 以及操作系统上,线程规划会 存在差异,有些操作系统甚至会忽略对线程优先级的设定。

3.注意点?

1.在开启线程前,设置优先级;
2.优先级高的线程执行概率大于优先级低的,但真正控制线程执行顺序还是由调度程序决定;
3.与在线程池中等待运行机会的线程相比,当前正在运行的线程可能总是拥有更高的优先级。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: