Java中多进程程序优先级的设定与使用
来源:互联网 发布:无法进入linux系统 编辑:程序博客网 时间:2024/06/02 07:33
涉及到多线程,如果嵌入式处理时后我已经接触到的优先级问题,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:\WorkSpace\02_技术实践\01_编程语言\05_Java\02_Java从入门到精通\PriorityDemo>javac PriorityDemo.java
E:\WorkSpace\02_技术实践\01_编程语言\05_Java\02_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:\WorkSpace\02_技术实践\01_编程语言\05_Java\02_Java从入门到精通\PriorityDemo>javac PriorityDemo.java
E:\WorkSpace\02_技术实践\01_编程语言\05_Java\02_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:\WorkSpace\02_技术实践\01_编程语言\05_Java\02_Java从入门到精通\PriorityDemo>javac PriorityDemo.java
E:\WorkSpace\02_技术实践\01_编程语言\05_Java\02_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中多进程程序优先级的设定与使用
- 线程的优先级设定与礼让
- 进程时间片的分配(优先级设定)
- iOS 中 Autolayout 优先级的使用(例如两个label一行显示抗压性设定)
- 进程的生命周期与优先级
- java中PriorityQueue优先级队列的使用
- Linux中进程的优先级
- Android中进程的优先级
- Android的进程优先级与进程回收
- Android的进程优先级与进程回收
- Android的进程优先级与进程回收
- Java程序中多线程的优先级设置方法
- CSS选择器的优先级设定
- java中时区的设定
- Android的进程、线程与优先级
- 操作系统中进程与程序的区别
- 用nice等命令设定的进程优先级有什么确切的含义?
- 为什么使用服务&进程的优先级
- java 动态代理
- Android 获取屏幕相关信息
- HDU1877 又一版A+B 浙大计算机研究生复试上机考试-2008年
- 事务隔离级别
- Linux相关网络资源收集
- Java中多进程程序优先级的设定与使用
- RSA javax.crypto.BadPaddingException: Blocktype mismatch: 0 错误
- Linux系统程序自动运行三法
- Java-----Socket中read方法什么时候返回-1
- 2017华为暑期实习生招聘真题(3月24日)
- Java基础之加解密(二) 信息摘要算法(MD)实践
- 科普|云计算的四种服务模式介绍
- HTML解析利器HtmlAgilityPack
- struts2_请求路径_namespace_result测试