我是靠谱客的博主 冷傲台灯,最近开发中收集的这篇文章主要介绍Java中多进程程序优先级的设定与使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

       涉及到多线程,如果嵌入式处理时后我已经接触到的优先级问题,Java之中应该也是避免不了的。看了一下,Java中有针对多线程优先级的使用技术。

       为了验证,做一个对比使用,写一段使用默认优先级的代码如下:

public classPriorityDemo extends Thread

{

       PriorityDemo()

       {

       }

 

       PriorityDemo(String str)

       {

              super(str);

       }

 

       public void run()

       {

              for(int i = 0; i < 15;i++)

              {

                     System.out.println("***");

              }

       }

 

       public static void main(String args[])

       {

              TdDemo1 td1 = new TdDemo1();

              TdDemo2 td2 = new TdDemo2();

 

              td1.start();

              td2.start();

       }

}

 

class TdDemo1extends PriorityDemo

{

       public void run()

       {

              for(int i = 0; i < 15;i++)

              {

                     System.out.println("taskdemo 1-" + i);

              }

       }

}

 

class TdDemo2extends PriorityDemo

{

       public void run()

       {

              for(int i = 0; i < 15;i++)

              {

                     System.out.println("taskdemo 2-" + i);

              }

       }

}

       代码的编译运行结果如下:

E:WorkSpace2_技术实践1_编程语言5_Java2_Java从入门到精通PriorityDemo>javac PriorityDemo.java

 

E:WorkSpace2_技术实践1_编程语言5_Java2_Java从入门到精通PriorityDemo>java PriorityDemo

task demo 1-0

task demo 1-1

task demo 1-2

task demo 1-3

task demo 1-4

task demo 1-5

task demo 1-6

task demo 1-7

task demo 2-0

task demo 2-1

task demo 2-2

task demo 2-3

task demo 2-4

task demo 2-5

task demo 1-8

task demo 2-6

task demo 1-9

task demo 2-7

task demo 1-10

task demo 2-8

task demo 2-9

task demo 1-11

task demo 2-10

task demo 1-12

task demo 2-11

task demo 2-12

task demo 1-13

task demo 2-13

task demo 1-14

task demo 2-14

 

       接下来修改代码如下:

public classPriorityDemo extends Thread

{

       PriorityDemo()

       {

       }

 

       PriorityDemo(String str)

       {

              super(str);

       }

 

       public void run()

       {

              for(int i = 0; i < 15;i++)

              {

                     System.out.println("***");

              }

       }

 

       public static void main(String args[])

       {

              TdDemo1 td1 = new TdDemo1();

              TdDemo2 td2 = new TdDemo2();

 

              td1.setPriority(MIN_PRIORITY);

              td2.setPriority(MAX_PRIORITY);

 

              td1.start();

              td2.start();

       }

}

 

class TdDemo1extends PriorityDemo

{

       public void run()

       {

              for(int i = 0; i < 15;i++)

              {

                     System.out.println("taskdemo 1-" + i);

              }

       }

}

 

class TdDemo2extends PriorityDemo

{

       public void run()

       {

              for(int i = 0; i < 15;i++)

              {

                     System.out.println("taskdemo 2-" + i);

              }

       }

}

       代码的编译与执行结果如下:

E:WorkSpace2_技术实践1_编程语言5_Java2_Java从入门到精通PriorityDemo>javac PriorityDemo.java

 

E:WorkSpace2_技术实践1_编程语言5_Java2_Java从入门到精通PriorityDemo>java PriorityDemo

task demo 2-0

task demo 2-1

task demo 1-0

task demo 1-1

task demo 1-2

task demo 1-3

task demo 1-4

task demo 1-5

task demo 2-2

task demo 2-3

task demo 2-4

task demo 2-5

task demo 2-6

task demo 2-7

task demo 1-6

task demo 2-8

task demo 1-7

task demo 2-9

task demo 1-8

task demo 2-10

task demo 1-9

task demo 2-11

task demo 1-10

task demo 2-12

task demo 1-11

task demo 2-13

task demo 1-12

task demo 2-14

task demo 1-13

task demo 1-14

       虽说具体的情况难以看出但是从总体的执行结果可以看出一个趋势,那就是给了高优先级的td2的执行在整个过程中安排的更往前了一点。Java的优先级可以有10个优先级指定,但是在Windows系统中只能够支持3个。这是看教程的时候教程中提到的,为了看一下现在的情况是否有所改变,再次修改代码如下:

public classPriorityDemo extends Thread

{

       PriorityDemo()

       {

       }

 

       PriorityDemo(String str)

       {

              super(str);

       }

 

       public void run()

       {

              for(int i = 0; i < 15;i++)

              {

                     System.out.println("***");

              }

       }

 

       public static void main(String args[])

       {

              TdDemo1 td1 = new TdDemo1();

              TdDemo2 td2 = new TdDemo2();

 

              td1.setPriority(10);

              td2.setPriority(1);

 

              td1.start();

              td2.start();

       }

}

 

class TdDemo1extends PriorityDemo

{

       public void run()

       {

              for(int i = 0; i < 15;i++)

              {

                     System.out.println("taskdemo 1-" + i);

              }

       }

}

 

class TdDemo2extends PriorityDemo

{

       public void run()

       {

              for(int i = 0; i < 15;i++)

              {

                     System.out.println("taskdemo 2-" + i);

              }

       }

}

       代码的编译与执行结果如下:

E:WorkSpace2_技术实践1_编程语言5_Java2_Java从入门到精通PriorityDemo>javac PriorityDemo.java

 

E:WorkSpace2_技术实践1_编程语言5_Java2_Java从入门到精通PriorityDemo>java PriorityDemo

task demo 1-0

task demo 1-1

task demo 1-2

task demo 1-3

task demo 2-0

task demo 2-1

task demo 2-2

task demo 2-3

task demo 2-4

task demo 2-5

task demo 2-6

task demo 2-7

task demo 1-4

task demo 2-8

task demo 1-5

task demo 2-9

task demo 1-6

task demo 2-10

task demo 1-7

task demo 2-11

task demo 1-8

task demo 1-9

task demo 1-10

task demo 2-12

task demo 2-13

task demo 1-11

task demo 2-14

task demo 1-12

task demo 1-13

task demo 1-14

       整个过程中并没有出现编译或者执行的问题,而且优先级的主要趋势在执行的结果中也基本能够得到验证。由此看来,现在Windows平台中的Java进程的优先级应该至少也有10级的级别使用了。

最后

以上就是冷傲台灯为你收集整理的Java中多进程程序优先级的设定与使用的全部内容,希望文章能够帮你解决Java中多进程程序优先级的设定与使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部