更新时间:2017年11月14日16时07分 来源:传智播客 浏览次数:
程序中的多永乐国际a600丶cc.v是并发执行的,但这只是宏观现象。对于大多数计算机而言,CPU只有一个,在某个特定的时刻只能执行一条机器指令,多永乐国际a600丶cc.v的每个永乐国际a600丶cc.v只有得到CPU的使用权才能执行指令。Java虚拟机按照特定机制为多个永乐国际a600丶cc.v分配CPU的使用权就是永乐国际a600丶cc.v的永乐国际a600丶cc.v。
在计算机中,CPU的永乐国际a600丶cc.v有两种永乐国际a600丶cc.v模型,分别是分时永乐国际a600丶cc.v模型和抢占式永乐国际a600丶cc.v模型。所谓分时永乐国际a600丶cc.v模型是指让所有的永乐国际a600丶cc.v轮流获得CPU的使用权,并且平均分配每个永乐国际a600丶cc.v占用的CPU的时间片。而抢占式永乐国际a600丶cc.v模型是指优先让可运行池中优先级高的永乐国际a600丶cc.v占用CPU,如果可运行池中的永乐国际a600丶cc.v优先级相同,那么就随机选择一个永乐国际a600丶cc.v,使其占用CPU。处于运行状态的永乐国际a600丶cc.v会一直运行,直至它不得不放弃CPU。Java虚拟机采用的就是抢占式永乐国际a600丶cc.v模型,这种默认的方式在很多时候都是适用的,程序员不需要去关心它,但有时候需要改变这种分配的模式,这时则需要控制CPU的永乐国际a600丶cc.v。JDK中提供了一系列的方法用于控制永乐国际a600丶cc.v的永乐国际a600丶cc.v。
永乐国际a600丶cc.v的优先级
在永乐国际a600丶cc.v中有优先级的机制,永乐国际a600丶cc.v的优先级用1~10之间的整数来表示,数字越大则表示优先级越高。除了数字,还可以使用Thread类中提供的三个静态常量表示永乐国际a600丶cc.v的优先级,他们分别是:MAX_PRIORITY、MIN_PRIORITY、NORM_PRIORIY。
优先级高的永乐国际a600丶cc.v获得CPU执行的机会越大,而优先级低的永乐国际a600丶cc.v获得CPU执行的机会越小。在默认情况下,每个永乐国际a600丶cc.v都有自己的优先级,例如main永乐国际a600丶cc.v具有普通优先级。永乐国际a600丶cc.v优先级不是固定不变的,通过调用Thread类的setPriority(int newPriority)方法可以进行改变,setPriority()方法的数newPriority接收1~10之间的数或者Thread类的三个静态常量,代码如下所示:
class MaxPriority implements Runnable {
publicvoid run() {
for(int i = 0; i < 3; i++) {
System.out.println(Thread.currentThread().getName()
+":优先级为高,循环变量为" + i);
}
}
}
class MinPriority implements Runnable {
publicvoid run() {
for(int i = 0; i < 3; i++) {
System.out.println(Thread.currentThread().getName()
+":优先级为低,循环变量为" + i);
}
}
}
public class Example06 {
publicstatic void main(String[] args) {
ThreadminPriority = new Thread(new MinPriority());
ThreadmaxPriority = new Thread(new MaxPriority());
minPriority.setPriority(Thread.MIN_PRIORITY);
maxPriority.setPriority(10);
minPriority.start();
maxPriority.start();
}
}
运行结果为:
Thread-1:优先级为高,循环变量为0
Thread-1:优先级为高,循环变量为1
Thread-1:优先级为高,循环变量为2
Thread-0:优先级为低,循环变量为0
Thread-0:优先级为低,循环变量为1
Thread-0:优先级为低,循环变量为2
在程序中创建了两个永乐国际a600丶cc.vminPriority和maxPriority,分别将永乐国际a600丶cc.v的优先级设置为1和10,从运行结果可以看出优先级高的maxPriority永乐国际a600丶cc.v先运行完毕后优先级低的minPriority永乐国际a600丶cc.v才开始运行。
虽然Java中提供了10个永乐国际a600丶cc.v优先级,但这些优先级需要操作系统的支持,然而,不同的操作系统支持的优先级并不相同,不能很好的和Java中永乐国际a600丶cc.v优先级一一对应,因此,在设计多永乐国际a600丶cc.v应用程序时,其功能的实现一定不能依赖于永乐国际a600丶cc.v的优先级,而只能把永乐国际a600丶cc.v优先级作为一种提高程序效率的手段。友情提示:获得更多学科学习视频+资料+源码,请加QQ:3276250747。