【精品】线程和多线程82.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文档。上传文档
查看更多
【精品】线程和多线程82

第13章 线 程 线程和多线程 线程的概念 在程序开始投入运行时,系统从程序入口开始按语句的顺序(其中包括顺序、分支和循环)完成相应指令直至结尾,从出口退出,同时整个程序结束。这样的语句结构称之为进程,或者说进程就是程序在处理机中的一次运行。 线程的概念 一个进程既包括其所要执行的指令,也包括了执行指令所需的任何系统资源,如CPU、内存空间、I/O端口等,不同进程所占用的系统资源相对独立。 线程的概念 目前所流行的操作系统中,大部分都是支持多任务的(如Windows 3.X,Windows NT,Windows 95,OS/2及UNIX的各个版本),这实际就是一种多进程的概念——每一个任务就是一个进程。 线程的概念 线程是比进程单位更小的执行单位,在形式上同进程十分相似——都是用一个顺序执行的语句序列来完成特定的功能。 线程没有入口,也没有出口,因此其自身不能自动运行,而必须栖身于某一进程之中,由进程触发执行。 线程的概念 在系统资源的使用上,属于同一进程的所有线程共享该进程的系统资源,但是线程之间切换的速度比进程切换要快得多。 线程的概念 从微观上讲,一个时间里只能有一个作业被执行, 在宏观上可使多个作业被同时执行,即等同于要让多台计算机同时工作,使系统资源特别是CPU的利用率得到提高,从而提高了整个程序的执行效率。 线程的概念 为了达到多线程的效果,Java语言把线程或执行环境(execution context)当作一种拥有自己的程序代码和数据的对CPU的封装单位,由虚拟机提供控制。 Java类库中的类java.lang.Thread允许创建并控制所创建的线程。 线程的结构 下图是线程运行机制示意图: 线程的结构 线程包含三个主要部分: 虚拟CPU本身, CPU执行的代码, 代码操作的数据。 线程的结构 在Java中,虚拟CPU体现于Thread类中。 当一个线程被构造时,它由构造方法参数、执行代码、操作数据来初始化。 创建线程一——继承Thread类 将一个类定义为Thread的子类,那么这个类就可以用来表示线程。 应用这种形式的构造方法创建线程对象时不用给出任何参数。 这个类中有一个至关重要的方法——public void run(),这个方法称为线程体,它是整个线程的核心,线程所要完成任务的代码都定义在线程体中,实际上不同功能的线程之间的区别就在于它们线程体的不同。 程序13-1 public class myThread extends Thread{ public void run(){ while(running){ // 执行若干操作 sleep(100); } } public static void main(String args[]){ Thread t = new myThread(); // 执行若干操作 } } 创建线程二——实现Runnable接口 Runnable是Java中用以实现线程的接口,从根本上讲,任何实现线程功能的类都必须实现该接口。 Runnable接口中只定义了一个方法就是run()方法,也就是线程体。 创建线程二——实现Runnable接口 Thread第二种构造方法中包含有一个Runnable实例的参数,这就是说,必须定义一个实现Runnable接口的类并产生一个该类的实例,对该实例的引用就是适合于这个构造方法的参数。 程序 13-2 public class xyz implements Runnable{ int i; public void run(){ while (true) { System.out.println(Hello +i++); } } } 程序 13-2 可以构造一个线程如下: Runnable r = new xyz(); Thread t = new Thread(r); 线程运行环境 关于两种创建线程方法的讨论 1. 适用于采用实现Runnable接口方法的情况 因为Java只允许单继承,如果一个类已经继承了Thread,就不能再继承其他类。 比如对于Applet程序,由于必须继承了java. applet.Applet,因此就只能采取这种实现接口的方法。 由于某些原因而几次被迫采用实现Runnable接口的方法,可能会出于保持程序风格的一贯性而继续使用这种方法。 关于两种创建线程方法的讨论 2. 适用于采用继承Thread方法的情况 当一个run()方法置于Thread类的子类中 时,this实际上引用的是控制当前运行系统 的Thread实例,所以,代码不必写 得繁琐: Thread.currentThread().suspend(); 可简单地写为:

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档