Java程序设计实用教程_第13章_Java多线程机制
- 格式:ppt
- 大小:1.96 MB
- 文档页数:23


第13章Java多线程 Java语言支持多线程。Java的预定义类都是按照多线程的思路定义的。程序员通过扩展(或实现接口)预定义好的线程类,定义自己的线程类。本章介绍多线程的概念、线程的创建、线程的控制与调度、线程同步等问题。
13.1 多线程 13.1.1 什么叫线程 操作系统可以将一个程序分为多个独立的程序片段,这些程序片段可以并行执行。每个程序片段可以封装为一个线程载体(线程是线程载体的一次执行过程),因此,线程的执行过程就是线程的创建、运行和销毁的过程。多个线程可以同时执行同一线程载体。 与进程不同,用同一个线程类创建的多个线程共享一块内存空间和一组系统资源外,每个线程的数据保存在寄存器和一个系统栈中。
13.1.2 线程生命周期
一个线程从创建、运行到消亡的过程称之为线程的生命周期。在线程的生命周期内,它处于5种状态之一,这5种状态是:新建、就绪、运行中、阻塞、死亡。在程序中,通过调用线程的相应方法,可以对线程进行控制与调度,使线程在几种状态之间转换。线程状态转移如图13-1所示。
图13-1 线程的状态转换图 1.新建状态 使用new运算符创建一个线程对象后,该线程还不是活动对象,系统没有为它分配资 273 源,此时的线程处于新建状态。 2.就绪状态 使用start()方法启动一个处于新建状态的线程后,系统为该线程分配了除CPU以外的所有资源。此时的线程处于就绪状态。就绪状态的线程有很多,它们在就绪队列中排队等待操作系统的调度(这时,线程本身无法主动获得CPU)。此时线程并未真正运行,即没有执行run()方法。
3.运行中状态 操作系统按照某种策略从就绪队列中选择一个线程后,将CPU分配给该线程,此时该线程才开始运行run()方法,这时的线程处于运行中状态。 对于单个CPU的计算机来说,多个线程通过分时使用CPU实现多线程对单处理器的共享。对于多个CPU的计算机来说,在同一时刻每个线程可以拥有自己独立的CPU资源。