第 8章 多线程
8.1 线 程 概 述
8.2 多线程设计
8.3 线程同步与死锁
8.1 线 程 概 述
8.1.1 程序,进程,线程和多线程程序是由若干条语句组成的语句序列,
是一段静态代码 。
进程是程序的一次动态执行过程 。
线程包含了一个计算机执行传统程序时所做的每一件事情 。
多线程是指同一个应用程序中有多个顺序流同时执行 。
8.1.2 线程状态和生命周期
1,新建状态
2,就绪状态
3,运行状态
4,阻塞状态
5,消亡状态
8.1.3 线程优先级和线程调度在 Java语言中,线程的优先级是用数字来表示的,范围为 1~ 10,如设置某线程优先级为 5。 另外 Thread类提供 3个有关线程优先级的静态属性:
NORM_PRIORITY,代表普通优先级,默认优先级,缺省为 5
MIN_PRIORITY,代表最低优先级,通常为 1
MAX_PRIORITY,代表最高优先级,通常为 10
对于一个新建线程,系统会遵循如下的原则为其指定优先级:
( 1) 继承创建它的父线程的优先级 。
( 2 ) 通过调用 Thread 类的
setPriority(int a)方法来设置线程的优先级 。
当一个在就绪队列中排队的线程获得
CPU资源而转入运行状态后,则称这个线程被调度。线程的调度遵循优先级基础上的抢先策略。抢先策略是指如下几个方面。
( 1)若一个比当前活动线程优先级更高的线程进入就绪状态时,则停止当前活动线程的执行,当前活动线程转入阻塞状态,插入就绪队列中重新等待调度,而优先级高的线程转入运行状态,成为活动线程。
( 2)若一个比当前活动线程优先级低的线程进入就绪状态时,则当前活动线程不停止继续执行,刚进入就绪状态的线程在就绪队列等待调度。
( 3)若一个与当前活动线程优先级相同的线程进入就绪状态时,则遵循“先到先服务”原则。
8.2 多线程设计
8.2.1 继承 Thread类
8.2.2 用实现 Runnable接口实现多线程
8.3 线程同步与死锁
1,线程同步
2,线程死锁