黑马程序员:【Java基础】多线程(5)-----线程的调度之优先级.doc_第1页
黑马程序员:【Java基础】多线程(5)-----线程的调度之优先级.doc_第2页
黑马程序员:【Java基础】多线程(5)-----线程的调度之优先级.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序中的多线程是并发执行的,但这只是宏观现象。对于大多数计算机而言,CPU只有一个,在某个特定的时刻只能执行一条机器指令,多线程的每个线程只有得到CPU的使用权才能执行指令。Java虚拟机按照特定机制为多个线程分配CPU的使用权就是线程的调度。在计算机中,CPU的调度有两种调度模型,分别是分时调度模型和抢占式调度模型。所谓分时调度模型是指让所有的线程轮流获得CPU的使用权,并且平均分配每个线程占用的CPU的时间片。而抢占式调度模型是指优先让可运行池中优先级高的线程占用CPU,如果可运行池中的线程优先级相同,那么就随机选择一个线程,使其占用CPU。处于运行状态的线程会一直运行,直至它不得不放弃CPU。Java虚拟机采用的就是抢占式调度模型,这种默认的方式在很多时候都是适用的,程序员不需要去关心它,但有时候需要改变这种分配的模式,这时则需要控制CPU的调度。JDK中提供了一系列的方法用于控制线程的调度 线程的优先级在线程中有优先级的机制,线程的优先级用110之间的整数来表示,数字越大则表示优先级越高。除了数字,还可以使用Thread类中提供的三个静态常量表示线程的优先级,他们分别是:MAX_PRIORITY、MIN_PRIORITY、NORM_PRIORIY。 优先级高的线程获得CPU执行的机会越大,而优先级低的线程获得CPU执行的机会越小。在默认情况下,每个线程都有自己的优先级,例如main线程具有普通优先级。线程优先级不是固定不变的,通过调用Thread类的setPriority(int newPriority)方法可以进行改变,setPriority()方法的数newPriority接收110之间的数或者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 在程序中创建了两个线程minPriority和maxPriority,分别将线程的优先级设置为1和10,从运行结果可以看出优先级高的maxPriority线程先运行完毕后优先级低的minPriority线程才开始运行。 虽然Java中提供了10个线程优先级,但这些优先级需要操作系统的支持,然而,不同的操作系统支持的优先

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论