第十章线程、文件与串行化.pptVIP

  • 0
  • 0
  • 约4.01千字
  • 约 15页
  • 2018-02-26 发布于河南
  • 举报
第十章线程、文件与串行化

第十章 线程、文件与串行化 本章将讨论有关线程及输入/输出的一些高级话题。首先,讲述了线程和并发编程的基本概念、模型和应用;然后阐述怎样从文件中读取数据和将数据写入文件,其中包括Java中最常见的输入/输出流;最后介绍了对象串行化以及如何用对象流实现串行化。 10.1 多线程程序设计 多线程程序能够使程序的不同部分同时运行。 现代操作系统和许多科学应用都是多线程程序。 使用多线程编程可以解决后台任务、并发操作、管理用户界面等编程难题,多线程程序设计因此也越来越重要。 10.1.1 多任务、进程和线程 在多任务操作系统中,通常一个运行的程序实例称为一个进程。进程也就是调入内存准备执行的程序。每个进程都在自己分配的空间内独立运行,进程与进程之间互不干扰。 线程是程序中的一个可执行语句序列,是一个单独的运行过程。通常,每个进程至少有一个线程(即主线程)在执行自己的地址空间中的代码。线程是进程内部执行的路径,是操作系统分配CPU时间的基本实体。 每个进程都可以包含多个线程,它们可以同时独立地执行进程的地址空间中的代码。进程的所有线程共享进程的地址空间。在基于线程的多任务处理环境中,线程是最小的执行单位。 10.1.1 多任务、进程和线程 应用程序为了实现多任务并行处理,可以采用创建多个进程和在单一进程中创建多线程两种方法,但后者比前者更有效,这是因为: 线程是轻量级的任务,线程的代码已经映射到了进程的地址空间,而新进程的代码还需要载入内存,所以系统创建和执行线程要比创建和执行进程快得多;而进程是重量级的任务,需要更多的管理开销和系统资源。 进程的所有线程共享进程的地址空间,并能够访问进程的全局变量,因而线程之间的通信会更便捷,线程间的转换也是低成本的。 10.1.2 Java线程模型 当Java程序运行时,立即启动一个主线程(main thread),它由我们熟悉的main方法开始执行。主线程可以起的作用是: 启动程序进程 负责创建其他子线程 负责完成整个进程最后的各种清理和关闭任务 尽管主线程在程序启动时自动创建,但仍然可以通过Thread.currentThread方法将其作为线程对象调用。要创建一个线程,可以通过实例化一个线程对象来实现。Java给出了两种方式: 继承Thread类 实现Runnable接口 10.1.2 Java线程模型 当Java程序运行时,它由main方法启动一个主线程。而用run方法启动一个子线程。对于新创建的线程。调用了该线程的start方法之后,就会自动调用线程对象的run方法。 线程是异步的,这就意味着执行的顺序和一系列线程的时序是零散而不可预测的,至少从编程者的角度看是这样的。 异步线程原则:除非它们是明确地有优先级的或者是严格同步的,否则线程是以完全异步的方式运行的。负责完成整个进程最后的各种清理和关闭任务。 多线程程序MultiThreadDemo1运行演示。 10.1.2 Java线程模型 每个线程都有一个生命周期,它是由若干个不同的状态组成的。这些状态包括: 就绪 线程做好了运行准备并在等待CPU 运行 线程在CPU上执行 等待 线程在等待发生某个事件 休眠 线程已被告知要休眠一段时间 阻塞 线程在等待I/O结束 死亡 线程被终止 10.1.2 Java线程模型 线程休眠是线程的一种最重要的状态,它可以主动让出CPU时间,消除资源竞争导致的阻塞。Thread.sleep方法可以按照毫秒级的时间使线程保持休眠状态,从而允许其他等待着的线程运行。 理论上,优先级高的线程比优先级低的线程获得更多的CPU时间。但实际上,线程获得的CPU时间通常是由包括优先级在内的多种因素决定的。 要设置线程优先级,可用Thread.setPriority方法。它将一个线程的优先级设置成一个整数值,该整数值在1和10之间。 协调两个线程之间的行为的一种方式是设定其中一个线程有更高的优先级。但一个永远都不放弃占有CPU的高优先级线程会导致低优先级线程过度等待。 带优先级控制的多线程程序运行演示( MultiThreadDemo3) 10.1.3 设计多线程的应用程序 在Java程序中,并发编程是通过多线程实现的。利用多线程编程的好处是能够让一个程序同时执行多个任务,这在设计动画时尤其重要。因为动画中通常有多个动画对象需要同时绘制,而不是等一个对象绘制完成后在绘制另一个对象。 多线程演示程序BubbleThreadDemo的设计。 10.2 流和文件 10.2.1 基本概念 Java中的所有输入输出,无论它是文件I/O还是涉及键盘和屏幕的I/O,都是通过流的使用来完成的。一个流就是以另一个对象为源或目的地传送信息的对象。流就像一个管道,连

文档评论(0)

1亿VIP精品文档

相关文档