第8章线程-2010-上课.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文档。上传文档
查看更多
第八章 线 程 目 录 8.1 线程和多线程 8.2 线程的生命周期 8.3 线程的优先级与调度管理 8.4 创建线程 8.5 创建线程 8.6 线程的常用方法 8.7 同步问题 8.8 线程交互 8.9 挂起、恢复和终止线程 8.10 线程联合 8.11 线程守护 进程与线程的区别 进程(Process) 进程就是程序的一次执行活动 运行一个程序,就是启动了一个进程 线程 (Thread) 线程是一个程序内部的一条执行路径或一个控制流 线程称为处理器调度的对象,而进程是资源分配的对象 8.1 进程与线序的区别 线程和进程的区别 每个进程都有独立的代码和数据空间(进程上下文),进程间的切换开销大。 同一进程内的多个线程共享相同的代码和数据空间,可以实现线程间的通信和同步操作 每个线程有独立的运行栈和程序计数器(PC),线程间的切换开销小 8.1 Java中的线程 JVM启动“主线程”执行主类的main()方法 在main()方法中可以再创建线程 JVM在主线程和其他线程之间轮流切换 JVM等到主线程及主线程中的所有线程都结束之后,才结束该Java应用程序 8.2 线程的生命周期 线程在它的一个完整的生命周期中通常要经历6种状态 JDK中用Thread.State枚举表示出了这6种状态: NEW:至今尚未启动的线程处于这种状态。称之为“新建”状态。 RUNNABLE:正在 Java 虚拟机中执行的线程处于这种状态。称之为“可运行”状态。 BLOCKED:受阻塞并等待某个监视器锁的线程处于这种状态。称之为“阻塞”状态。 WAITING:无限期地等待另一个线程来执行某一特定操作的线程处于这种状态。称之为“等待”状态。 TIMED_WAITING:等待另一个线程来执行取决于指定等待时间的操作的线程处于这种状态。称之为“超时等待”状态。 TERMINATED:已退出的线程处于这种状态。称之为“中止”状态。 1. 新线程 2. 可运行的线程 3. 被阻塞和等待状态下的线程 4. 被终止的线程 线程的状态 实例分析 线程的状态 例子1,阐述线程的4种状态。 分析结果 JVM首先将CPU资源给主线程。 在“主线程”和“zhang线程”之间切换。 在“zhang线程”和“wang线程”之间切换。 线程进入死亡状态, JVM结束整个进程。 说明:上述程序在不同的计算机运行或在同一台计算机反复运行的结果不尽相同,输出结果依赖当前CPU资源的使用情况。 例子2,主动调用sleep()方法让出CPU的使用权。 8.4 8.5 创建线程 方法一:实现Runnable接口 方法二:继承Thread类 两种方法的讨论 方法一:继承Thread类 Thread类本身也实现了Runnable接口,但run()方法中没有任何操作语句 Thread类的默认构造函数将它自己作为默认目标 在继承Thread类的子类中覆盖run()方法,创建该子类的对象,从而创建一个线程 方法一:继承Thread类 public class myThread extends Thread{ public void run(){ //线程体,整个线程的核心 while(running){ … … sleep(100); } } public static void main(String args[]){ Thread t1 = new myThread(); //无参数 Thread t2 = new myThread(“name”); t1.start(); … … } } 例子3,运用了System类中的类方法:exit (int n),结束整个程序。 方法二:实现Runnable接口 是Java中用以实现线程的接口。 Runnable接口允许我们可以将任何对象作为一个线程的目标 Runnable接口中只定义了一个方法就是run()方法,也就是线程体。 方法二:实现Runnable接口 用实现Runnable接口对象构造一个线程的方法如下: Thread t = new Thread (runnable 对象); 说明:Thread第二种构造方法中包含有一个Runnable实例的参数,必须定义一个实现Runnable接口的类并产生一个该类的实例,该实例称为所创线程的目标对象。 例子4,两个线程zhang和cheng,使用同一目标对象。 更常见的作法是由一个对象来处理它自己的线程 例子:Animation 方法二:实现Runnable接口 使用同一目标对象的线程可共享目标对象

文档评论(0)

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

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

1亿VIP精品文档

相关文档