线程被称为“最小处理单元”,是一个轻量级子进程,分配了一些需要执行的工作。线程共享分配给它们的相同内存槽并且彼此独立,从而促进多任务处理。但是当多个线程在共享内存槽上运行时,必然会发生资源竞争。为了避免这种竞争从而实现高吞吐量,引入了线程优先级的概念。当多个任务在同一系统上运行时,它具有很大的意义。 “线程调度程序负责根据优先级分配执行线程的工作”。
开始您的免费软件开发课程
网络开发、编程语言、软件测试及其他
JVM(JAVA 虚拟机)默认或由程序员明确决定线程的优先级。优先级范围在1到10之间,当我们想要给线程最高优先级时分配10。上下文切换更改有助于根据优先级顺序从线程 1 转换到线程 2,依此类推。
注意: 有可能两个或多个线程被分配相同的优先级,那么它们的执行取决于操作系统。例如,Windows 使用循环算法来处理这种情况。JAVA中以宏的形式预先保存了三个主要变量,解释如下-
与获取和设置优先级相关的一些功能是:
以下是java线程优先级的示例:
下面是一些示例,使用上面已定义的变量和 JAVA 中可用的现成函数演示线程优先级概念。
代码:
public class test extends Thread{ public void run (){ System.out.println ( "The name of thread running curremtly is :"+Thread.currentThread ().getName ()); System.out.println ( "The priority od thread running currently is:"+Thread.currentThread ().getPriority ()); } public static void main (String args[]){ test t1=new test (); test t2=new test (); test t3=new test (); t1.setPriority (Thread.MIN_PRIORITY); t2.setPriority (Thread.MAX_PRIORITY); t3.setPriority (Thread.NORM_PRIORITY); t1.start (); t2.start (); t3.start (); } }
输出:
下面是用户自定义优先级定义和打印的示例。
代码:
public class test2 extends Thread { public void run () { System.out.println ( " The control is under run function now..."); } public static void main (String args[]) { // Here we are creating threads using the constructors. test2 t1=new test2 (); test2 t2=new test2 (); // setpriority () function is used below along with the parameter to set the prioirity. t1.setPriority (2); t2.setPriority (9); // Here we are coding on how to display output strings. System.out.println ( " The priority assigned to thread t1 is: " + t1.getPriority ()); System.out.println ( "The priority assigned to thread t2 is: " + t2.getPriority ()); // the run () function is defined above will be called via start () function and print the strinf which is there in it. t1.start (); } }
输出:
注意: 优先级应严格落在 1 到 10 的范围内。如果优先级超出此范围,则编译器会抛出以下错误。当使用 setPriority () 函数设置线程 t2 的优先级时,当 13 被赋予优先级而不是 9 时,我收到此错误。例外:
线程“main”中的异常 java.lang.IllegalArgumentException
位于 java.base/java.lang.Thread.setPriority (Thread.java:1141)
在 test2.main (test2.java:14)
多线程和为线程分配优先级有许多优点,如下所示:
这是在同一系统中操作多个任务的广泛使用且有效的方法之一。由于线程共享内存,这种方式也是节省内存的。我们可以让多个线程在系统中运行,但这可能会混淆处理器首先选择哪个线程。通过为线程分配优先级解决了这个问题。该线程将继续运行,直到完成或被更高优先级的线程中断。此功能与操作系统密切配合。准备Word文档,边听音乐边上网,效率并不高,直到多线程这一神奇概念的出现。
以上是Java线程优先级的详细内容。更多信息请关注PHP中文网其他相关文章!