可以通过使用java的线程优先级来实现,可以使用java的线程优先级来实现业务的优先级调度

  可以通过使用java的线程优先级来实现,可以使用java的线程优先级来实现业务的优先级调度

  00-1010前言:Java线程优先级的例子Java线程优先级的优点结论

  00-1010线程被称为“最小处理单元”,它是一个轻量级子进程,分配了一些要执行的工作。线程共享分配给它们的相同内存槽,并且相互独立,因此便于多任务处理。然而,当多个线程运行在一个共享内存槽上时,将不可避免地发生资源竞争。为了避免这种竞争,实现高吞吐量,引入了线程优先级的概念。当多个任务在同一个系统上运行时,这一点很重要。“线程调度器根据优先级分配执行线程”。

  JVM(JAVA虚拟机)默认决定线程的优先级,或者由程序员明确决定。优先级介于1和10之间。当我们想给线程最高的优先级时,我们会指定10。上下文切换有助于根据优先级顺序从线程1过渡到线程2,等等。

  注意:可能有两个或多个线程被分配了相同的优先级,所以它们的执行取决于操作系统。例如,Windows使用循环算法来处理这种情况。

  Java线程优先级的变量

  JAVA中以宏的形式预先保存了三个主要变量,如下所述-

  Public Static int MIN_PRIORITY:这是一个静态变量,访问修饰符的类型为“公共”。这个变量的值是1。这是分配一个具有最低优先级的线程。Public Static int NORM_PRIORITY:这是一个静态变量,访问修饰符的类型为“公共”。这个变量的值是5。这是分配一个普通优先级的线程。当开发人员没有明确分配优先级时,它是默认优先级。Public Static int MAX_PRIORITY:这是一个静态变量,访问修饰符的类型为“公共”。这个变量的值是10。这是分配一个具有最高优先级的线程。与获取和设置优先级相关的一些功能包括:

  Public Final int getPriority():这个函数用于获取任何被请求线程的优先级。这个函数返回一个整数,因为它的返回类型是“int”。整数的范围可以在1到10之间。这个函数是公共的和最终的。public void set priority(int new priority):这个函数用来设置任何线程请求的优先级。这个函数以一个整数作为参数,在函数定义中的参数原型中也有提到。参数的范围可以在1到10之间。这个函数是公共的和最终的。

  

目录

以下是java线程优先级的示例:

 

  下面是一些例子,使用上面已经定义的变量和JAVA中现成的函数来演示线程优先级的概念。

  代码:

  公共类test扩展Thread { public void run(){ system . out . println(当前运行的线程名称为: Thread.currentThread()。getName());System.out.println(当前运行的线程优先级为: Thread.currentThread()。getPriority());} public static void main(String args[]){ test t1=new test();test T2=new test();测试t3=新测试();t1.setPriority(线程。MIN _ PRIORITY);t2.setPriority(线程。MAX _ PRIORITY);t3.setPriority(线程。NORM _ PRIORITY);t1 . start();T2 . start();T3 . start();} }输出:

  示例2:

  以下是用户自定义优先级定义和打印的示例。

  代码:

  公共类test2扩展了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。

 

  

异常情况:

 

  

Exception in thread “main” java.lang.IllegalArgumentExceptionat java.base/java.lang.Thread.setPriority (Thread.java:1141)at test2.main (test2.java:14)

 

  

Java线程优先级的优势

多线程和将优先级分配给以下线程有很多好处:

 

  它允许在系统中同时执行多个操作,以及线程的优先级。例如,用户正在网上冲浪,但在安装新软件时突然中断了系统。在这种情况下,优先考虑重新启动系统,而不是上网。如果程序员没有明确定义线程优先级,JAVA线程将从父线程继承其优先级。存在绕过下游线程中的优先级并保持对称性的优先级保留。这使得程序员很容易调试程序。它使代码更简单,因此易于维护。通过分配优先级,它使上下文切换的工作变得更加容易。

 

  

结论

这是在同一个系统中操作多个任务的广泛使用且高效的方法之一。由于线程共享内存,因此这种内存有效的方式也是如此。我们可以在系统中运行多个线程,但这可能会混淆处理器,首先选择哪个线程。通过为线程分配优先级,这个问题得以解决。线程继续运行,直到它完成或被优先级更高的线程中断。此功能与操作系统密切配合。

 

  到此这篇关于Java线程优先级变量及功能的文章就介绍到这了,更多相关Java线程优先级内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: