2章線程.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文档。上传文档
查看更多
2章線程

第12章 线程 [内容提要] 在网络分布式编程盛行的今天,多线程编程已成为现代编程语言普遍具备的功能。 Java作为一门网络语言,从内核全面支持多线程技术。 多线程是Java程序设计的特色之一,利用多线程技术可以方便地实现任务的并发处理。 本章结合代码讲解了线程相关的基本概念,并通过几个实例重点展示Java线程的构造、调度和数据交换的方法。 第1节、线程的概念 一、 线程的概念 在多线程程序设计中,线程是程序执行过程中一个子运行序列。 进程与程序的关系 程序是静态的代码,一个进程是某个程序的一次执行过程 例如你的机器只装了一个QQ程序,但是同时允许两个帐号登陆,那此时有两个QQ进程运行 进程与线程的关系 线程则是一个比进程更细微的程序执行序列,是进程的某个子序列 例如你上QQ后可以给甲传文件,给乙视频聊天。那此时该QQ进程管理了两个线程。分别负责传文件和视频聊天 进程与线程的关系 由谁管理? 线程由程序负责管理,而进程由操作系统调度。 线程依附于进程 线程依附于进程的上下文环境中,随进程或父线程执行后启动。 地址空间 多个线程使用相同的地址空间,因此线程之间的通信非常方便。 而进程之间使用不同的地址空间,可以单独执行。 多线程程序设计是并发程序设计的一种,各个线程之间是并行执行的,当计算机只有一个CPU时,操作系统会使用分时或其他方法来模拟并行运行的效果。 举例:如可以同时听歌和玩游戏,是操作系统把时间段分成很小的片断在两个运行的程序间切换 多线程程序设计应用非常广泛。 当我们需要在一个程序当中同时执行几段代码时,就需要用到多线程来实现。 举例:网站下载,大型科学计算等。 第2节 线程的创建 第一种方法 以多线程方式启动执行的类必须继承java.lang.Thread类,实现该类的Run()方法,然后控制线程的执行; 第二种方法 如果只要一段代码在单独线程中运行 则可以继承java.lang.Runnable接口,并将该段代码放在该接口Run()方法中,然后通过构造Thread类对象实现线程的建立和运行控制。 一、Thread类创建多线程应用程序 Thread类提供了用于启动、挂起、恢复以及终止线程的一系列方法, 除此之外,还提供了控制线程优先级以及线程的名字等其他方面的方法。 使用Thread类建造多线程程序的方法 将自定义的应用程序类继承Thread类,并覆盖其run()方法,当线程开始启动时会调用这个方法。 通过覆盖run()方法,就可以使线程在后台完成一些有用的任务。 然后,在自定义类中的main()方法,声明一个Thread类型的对象使之指向自定义应用程序类的实例。 如: Thread t1=new ExtendThreadDemo(1); 再调用start()方法启动线程,该方法会调用前面定义的run()方法,并使之脱离main()方法的主线程,在操作系统中申请新的线程运行。 如: t1.start();//启动线程 例12-1 输出如下: Creating thread 1 Creating thread 2 Thread1 is running Thread2 is running 约过5秒,继续显示 1 is finished 2 is finished 同时有三个线程在运行,CPU同时执行,请分析每句输出是哪个线程产生的? Thread1 Thread2 注意,一般创建的普通线程(也称用户线程)均会在完成自身的工作之后才会终止,main方法构成的线程称为主线程,它总是用户线程,故它总是要等它创建的子线程结束后才能结束。 与用户线程相对的是守护线程,只有当其它线程(如实际的应用程序)正在运行时才有用,一旦其他线程结束后,不管它本身的任务是否完全完成均会终止。 例12-2 二、使用Runnable接口创建多线程应用程序 由于Java只支持单重继承,使用扩展Thread类的方式实现多线程,就会导致应用程序不能继承其他的类,在构造复杂程序时很不方便。 使程序能够多线程执行的更好的方法是实现java.lang.Runnable接口。 Runnable接口唯一的定义了一个run()方法,实现该接口必须实现这个方法。 应用程序类实现了这个接口则该类既可以以多线程的方式执行,又可以继承其他的类。 步骤 创建这类多线程程序的方法是定义类时声明实现Runnable接口并写好线程体run()方法, 然后在main()方法中声明并创建Runnable类型的对象,以该对象为构造参数,声明并构造Thread对象, 当调用了线程对象的

文档评论(0)

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

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

1亿VIP精品文档

相关文档