第09章 线程.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文档。上传文档
查看更多
第十章 JAVA线程 本章主要内容 10.1 线程简介 10.2 为什么使用线程 10.3 JAVA线程 10.4 总结 10.1 简介 10.1.1 什么是线程 一般来说,我们把正在计算机中执行的程序叫做“进程”(Process) ,而不将其称为程序(Program)。所谓“线程”(Thread),是“进程”中某个单一顺序的控制流。 线程在程序中是独立的、并发的执行路径 线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。 10.2 线程和进程 进程就是在某种程度上相互隔离的、独立运行的程序。 线程是进程内部的单一控制序列流。一个进程可以具有多个并发的线程。 进程可以支持多个线程,它们看似同时执行,但互相之间并不同步。(CPU只是将时间切割为时间片,然后将时间片分配给这些线程,CPU的高速计算能力,给人的感觉就像是多个线程在同时执行一样。) 进程中的所有线程共享进程的虚拟地址空间,这意味着所有线程都可以访问进程的全局变量和资源。这一方面为编程带来了方便,但另一方面也容易造成冲突。 10.3 JAVA线程 10.3.1 实现方式 Java程序通过流控制来执行程序流,程序中单个顺序的流控制称为线程,多线程则指的是在单个程序中可以同时运行多个不同的线程,执行不同的任务 Java里面实现多线程,有2个方法 继承Thread类(位于java.lang包内) 实现Runnable接口 一般鼓励使用第二种方法,因为Java里面只允许单一继承,但允许实现多个接口。第二个方法更加灵活 10.3 JAVA线程 每个线程都是通过某个特定Thread对象所对应的方法run( )来完成其操作的 方法run( )称为线程体 使用start() 方法启动线程 启动线程是使线程进入到可运行(runnable)状态,并不一定立即开始执行该线程 两种创建线程方法的比较 使用Runnable接口 形成清晰的模型; 还可以从其他类继承; 保持程序风格的一致性。 直接继承Thread类 不能再从其他类继承; 编写简单,可以直接操纵线程 线程属性 线程体 所有的操作都发生在线程体中,在Java中线程体是从Thread类继承的run()方法,或实现Runnable接口的类中的run()方法。当线程产生并初始化后,实时系统调用它的run()方法。run()方法内的代码实现所产生线程的行为,它是线程的主要部分。 线程状态 新线程态 可运行态 运行中状态 等待、阻塞、睡眠状态 死亡态 线程优先级 10.3.4 线程状态 新建状态、初始化状态: 线程对象已经被创建,但是还没有被启动时的状态。这段时间就是在我们调用new命令之后,调用start()方法之前。 可运行状态、就绪状态: 在我们调用了线程的start()方法之后线程所处的状态。处于RUNNABLE状态的线程在JAVA虚拟机(JVM)上是运行着的,但是它可能还正在等待操作系统分配给它相应的运行资源以得以运行。 运行状态 当线程调度器选择一个线程作为当前执行进程时,该线程就处于运行状态 10.3.4 线程状态 等待、阻塞、睡眠状态 当以下事件发生时,线程进入非运行态。 ①suspend()方法被调用; ②sleep()方法被调用; ③线程使用wait()来等待条件变量; ④线程处于I/O等待 DEAD(死亡状态): 当run()方法返回,或别的线程调用stop()方法,线程进入死亡态 线程的执行特性 一个线程必须处于如下五种可能的状态之一: 初始态/新状态 Runnable 运行中状态: 阻塞/ NonRunnable 死状态 10.3.5 线程控制基本方法 线程状态转换 10.3.6 线程状态转换 10.3.7 加入线程(join方法) 10.3.8 线程优先级与调度 线程的优先级用数字来表示,范围从1到10,一个线程的缺省优先级是5 Thread.MIN_PRIORITY = 1 Thread.MAX_PRIORITY = 10 Thread.NORM_PRIORITY = 5 int getPriority()方法获得线程对象的优先级 setPriority(int newPriority)方法设置优先级 Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程。线程调度器按照线程的优先级决定应调度哪些线程来执行 多数线程的调度是抢先式的。即如果在当前线程执行过程中,一个更高优先级的线程进入可运行状态,则这个线程立即被调度执行. 10.3.9 共享受限资源 多线程

文档评论(0)

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

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

1亿VIP精品文档

相关文档