基于任务驱动模式的Java程序的设计第七章 多线程程序的设计.pptxVIP

基于任务驱动模式的Java程序的设计第七章 多线程程序的设计.pptx

  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程序的设计第七章 多线程程序的设计

第七章 多线程程序设计 第一节 线程的概念 线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID、当前指令指针(PC)、寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有运行中必需的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。每一个程序至少有一个线程,若程序只有一个线程,那就是程序本身。 第一节 线程的概念 以前古老的DOS操作系统(V 6.22)是单任务的,还没有线程的概念,系统在每次只能做一件事情。比如在复制文件的时候就不能重命文件名。为了提高系统的利用效率,采用批处理来批量执行任务。 第一节 线程的概念 一、线程、进程和多任务 现在的操作系统都是多任务操作系统,每个运行的任务就是操作系统所做的一件事情,比如在听歌的同时还在用MSN和好友聊天。听歌和聊天就是两个任务,这个两个任务是“同时”进行的。一个任务一般对应一个进程,也可能包含好几个进程。比如运行的MSN就对应一个MSN的进程,如果用户使用的是Windows系统,就可以在任务管理器中看到操作系统正在运行的进程信息。 第一节 线程的概念 一般来说,当运行一个应用程序的时候,就启动了一个进程,当然有些会启动多个进程。启动进程的时候,操作系统会为进程分配资源,其中最主要的资源是内存空间,因为程序是在内存中运行的。在进程中,有些程序流程块是可以乱序执行的,并且这个流程块可以同时被多次执行。实际上,这样的流程块就是线程体。线程是进程中乱序执行的代码流程。当多个线程同时运行的时候,这样的执行模式就成为并发执行。 第一节 线程的概念 线程与进程的比较如下: (1) 进程:每个进程都有独立的代码和数据空间(进程上下文),进程切换的开销大。 (2) 线程:即轻量的进程,同一类线程共享代码和数据空间。每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。 (3) 多进程:在操作系统中能同时运行多个任务程序。 (4) 多线程:在同一应用程序中有多个顺序流同时执行。 第一节 线程的概念 多线程机制是Java语言的又一重要特征,使用多线程技术可以使系统同时运行多个执行体,这样可以加快程序的响应时间,提高计算机资源的利用率。使用多线程技术可以提高整个应用系统的性能。 在Java中,创建线程有两种方法:一种是通过创建Thread类的子类来实现;另一种是通过实现Runnable接口的类来实现。 第一节 线程的概念 二、Java中的多线程 第二节 多线程程序设计 从Thread类继承是创建一个线程较为简便的方法。在继承这个类之后,我们需要覆盖它的run方法,每一个线程都会分别执行一次run方法。 第二节 多线程程序设计 一、从Thread类继承 下面程序是一个多线程的实例。在这个程序中有两个线程,每个线程都会执行一次run方法,但是两个线程执行的顺序并不固定,因此,输出谁先谁后都是随机的。程序后面是某一次运行的输出(注意每次运行都会不同)。 注意,创建线程后,start方法用于启动线程。 第二节 多线程程序设计 【示例7.1】 通过继承类Thread构造线程体。 class SimpleThread extends Thread { public SimpleThread(String str){ super(str); } public void run() {//重写run方法 for (int i = 0; i 10; i++) { //打印次数和线程的名字 第二节 多线程程序设计 System.out.println(i + + getName()); try { //线程睡眠把控制权交出去 sleep((int)(Math.random() * 1000)); }catch (InterruptedException e) { } } System.out.println(DONE! + getName()); } } 第二节 多线程程序设计 public class HelloWorld { public static void main(String[] args) {

文档评论(0)

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

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

1亿VIP精品文档

相关文档