Java线程的优先级到底有没有用?

125 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

在java程序设计语言中,每个线程有一个优先级。默认情况下,一个线程会继承构造它的那个线程的优先级。可以用setPriority方法提高或者降低任何一个线程的优先级,可以将优先级设置为1-10中的任何一个,源码中是通过3个关键字进行体现的。

在这里插入图片描述 如果设置的有优先级不在1-10范围内会抛出一个异常 在这里插入图片描述 每当线程调度器有机会选择新的线程的时候,它首先选择具有较高优先级的线程。但是线程优先级高度依赖于系统。当虚拟机依赖于宿主机平台的线程实现时,java线程的优先级会映射到宿主机平台的优先级,平台的线程优先级别可能比java中的10个等级还要多,当然可能也会更少。

例如在windows有7个优先级别。Java的一些优先级会映射到同一个操作系统优先级。在Oracle为Linux提供的Java虚拟机中,会完全忽略线程优先级--------所有线程都有相同的优先级。 在没有使用操作系统线程的Java早期版本中,线程优先级可能很有用。不过现在不要再使用线程优先级了