7 第11章 多线程1.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7 第11章 多线程1

第11章 多 线 程 主要内容 线程相关的概念 线程的生存周期 线程优先级与调度策略 线程的创建和执行 通过继承Thread的子类创建线程 通过实现Runnable 接口创建线程 多线程的同步控制 线程间的通信 多线程的守护 11.1 几个相关概念 11.2 线程的概念 线程是进程中可独立执行的子任务,是程序内的一个单一的顺序控制流程,也被称为“轻型进程(lightweight process)”或“执行上下文(execution context )” 一个进程可以含有一个或多个线程,每个线程都有一个唯一的标识符。 11.2 线程的概念 同类的多个线程是共享一块内存空间和一组系统资源,而线程本身的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈。所以系统在产生一个线程,或在各个线程之间切换时,负担要比进程小的多。 同进程一样,一个线程也有从创建,运行到消亡的过程,称为线程的生命周期。用线程的状态(state)表明线程处在生命周期的哪个阶段。 java中多线程就是一个类或一个程序执行或管理多个线程执行任务的能力,每个线程可以独立于其他线程而独立运行,当然也可以和其他线程协同运行,一个类控制着它的所有线程,可以决定哪个线程得到优先级,哪个线程可以访问其他类的资源,哪个线程开始执行,哪个保持休眠状态。 ??正常终止 ??run()方法运行完毕 ??强行中止 ??调用线程对象的stop()方法 ??创建线程对象的上级线程停止 11.3 线程的生存周期 11.4 线程优先级与调度策略 ??同一时刻如果有多个线程处于可运行状态,则他们需要排队等待CPU资源.此时每个线程自动获得一个线程的优先级(priority),优先级的高低反映线程的重要或紧急程度。可运行状态的线程按优先级排队,线程调度依据优先级基础上的“先到先服务”原则。 Java线程优先级 ??范围从1-10,数字越高越能被优先执行 Thread.MIN_PRIORITY(常量1,最低优先级) Thread.NORM_PRIORITY(常量值5,默认优先级) Thread.MAX_PRIORITY(常量10,最高优先级)。 线程的优先级的设置或读取: 用Thread对象的方法setPriority(int priority); 用getPriority()方法获得线程的优先级。 11.4 线程优先级与调度策略 大多数计算机只有一个CPU,因此一个时刻只有一个线程在运行,多个线程只能是“宏观上并行,微观上串行” ??在有限个CPU的系统中确定多个线程的执行顺序称为线程的调度 ??Java语言采用了简单的“固定优先级调度算法”,高优先级的线程总是更容易得到CPU使用权。 ??只有当所有高优先级的线程停止或处于不可运行状态,低优先级的线程才能运行。 11.5 如何创建线程 11.5.1继承Thread类 要在一个类里激活线程,必须准备以下两件事 (1)此类必须是继承自Thread类。 (2)线程所要执行的代码必须写在run()方法内 线程执行时从run()方法开始,就像main()方法是应用程序的执行起点。Run()是定义在Thread类里的方法,因此把线程的程序代码写在run()方法内,实际上是覆盖。 Class PrintThread extendsThread { ??private int sleepTime; ??public PrintThread( String name ) { ??super( name ); ??sleepTime= (int) ( Math.random() * 5000); ??System.out.println( Name: + getName() ??+; sleep: + sleepTime); ??} ??public void run() { ??try{ ??System.out.println( getName() + going to sleep); ??Thread.sleep( sleepTime); ??} ??catch( InterruptedException ie) { ??System.err.println( ie.toString() ); ??} ??System.out.println( getName() + done sleeping); ??} ??} public class ThreadTester{ ??public static void main( String args[] ){ ??PrintThread thread1, thread2, thread3, thread4; ??thread

文档评论(0)

ghwes75 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档