Java程序设计基础第15章 实现多线程.pptVIP

  • 1
  • 0
  • 约1.91千字
  • 约 14页
  • 2019-07-17 发布于辽宁
  • 举报
Java程序设计基础-国家级十二五规划教材-大连理工大学出版社 Java程序设计基础-国家级十二五规划教材-大连理工大学出版社 第15章 实现多线程 复习提问 1、流有什么作用,说出4个流的类名。 2、文件的处理是通过什么流实现的? 3、File类与FileInputStream类有什么不同? 本章提要 主要知识点: 线程的概念; 线程的优先级与生命周期; 线程的创建方法; 线程的同步处理 学习目标:理解线程与多线程的意义,掌握线程的创建和用法,能够运用线程处理机制解决程序的同步问题。 15.1 认识多线程 线程Thread本来是操作系统中的概念,由进程process引伸而来。 一个标准的线程由线程ID、当前指令指针、寄存器集合和堆栈组成,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。 15.1 认识多线程 15.1.1 多线程的意义 线程是比进程更小的执行单位,一个进程在执行过程中可以产生多个线程,每个线程也有自己的产生、存在和消亡过程,也是一个动态的概念,同一进程的多个线程共享一块内存空间和一组系统资源,有可能相互影响。 15.1 认识多线程 15.1.2 线程的优先级与分类 每一个线程都会分配一个优先级,优先级越高,系统优先调度执行。Java将线程的优先级分为10个等级,用数字1~10表示,数字越大优先级越高,默认的优先级是居中,即为5。 Thread类定义了3个线程优先级常量: MIN_PRIORITY //最小优先级,用1表示 MAX_PRIORITY //最大优先级,用10表示 NORMAL_PRIORITY //普通优先级,用5表示 15.1 认识多线程 15.1.3 线程的生命周期 Java程序使用Thread类及其子类的对象表示线程,新建的线程在它完整的生命周期中,包括新建、就绪、运行、阻塞和死亡5种状态。 15.2 创建多线程 15.2.1 Thread线程类 1、构造方法 Thread类的构造方法很多,主要包括: n Thread(); n Thread(Runnable target); Thread(Runnable target,String name); Thread(String name); 15.2 创建多线程 15.2.1 Thread线程类 2、主要方法 n int activeCount() //返回当前活动线程数 n Thread currentThread() //返回当前运行的线程 n String getName() //返回线程的名字 destroy() //破坏线程,但不进行清理 int getPriority() //返回线程的优先级 ThreadGroup get ThreadGroup() //返回线程组名 15.2 创建多线程 15.2.2 线程的创建 1、继承Thread类创建线程 从Thread类派生一个类,并覆盖Thread类中的run方法。 一般包括三步: 从Thread类派生一个类,并覆盖Thread类中的run方法 创建该子类的对象 调用start方法启动本线程 例15-1:线程的使用 15.2 创建多线程 15.2.2 线程的创建 2、实现Runnable接口 接口类Runnable只有一个方法run(),本方法传递了一个实现Runnable接口的类对象,这样创建的线程调用了那个实现Runnable接口的类对象中的run()方法作为其运行代码,而不再调用Thread类的run()方法。 方法run()由系统自动调度,即通过start()方法,而不能由程序调用 例16-3:利用实现Runnable接口的方法建立线程 15.3 同步多线程 15.3.1 synchronized同步方法 通过在方法声明中加入synchronized关键字可以声明同步方法。如: public synchronized void fetchMoney(){ synchronized(this){ …} } 例15-4:多个窗口联网卖车票的问题,假设车票共100张,编写从100号开始逐渐减少,直到票号为0,表示所有票已经全部卖完。票号是根据卖出情况自动编写并当场打印的,就是说卖票过程包括卖票和车票号递减两步。 Java程序设计基础-国家级十二五规划教材-大连理工大学出版社 Java程序设计基础-国家级十二五规划教材-大连理工大学出版社

文档评论(0)

1亿VIP精品文档

相关文档