线程简介
世间有很多工作都是可以同时完成的。例如:人体可以同时进行呼吸、血液循环、思考问题等活动;用户既可以使用计算机听歌,也可以使用它打印文件。同样,计算机完全可以将多种活动同时进行,这种做法放在 Java 中被称为并发,而将并发完成的每一件事情称为线程。
在 Java 中,并发机制非常重要。在以往的程序设计中,我们都是一个任务完成后再进行下一个任务,这样下一个任务的开始必须等待前一个任务的结束。Java 语言提供了并发机制,程序员可以在程序中执行多个线程,每一个线程完成一个功能,并与其他线程并发执行,这种机制被称为多线程。然而,有必要强调的是,并不是所有编程语言都支持多线程。
多线程是非常复杂的机制,比如同时阅读3本书,首先阅读第1本书第1章,然后阅读第2本书第1章,再阅读第3本书第1章,回过头再阅读第1本书第2章,以此类推,就体现了多线程的复杂性。
多线程既然这样复杂,那么在操作系统中是怎样工作的呢?其实 Java 中的多线程在每个操作系统中的运行方式也存在差异,在此着重说明多线程在 Windows 操作系统中的运行模式。Windows 操作系统是多任务操作系统,它以进程为单位。一个进程是一个包含有自身地址的程序,每个独立执行的程序都被称为进程。也就是说,每个正在执行的程序都是一个进程。系统可以分配给每个进程一段有限的使用CPU的时间(也可以将其称为CPU时间片),CPU在这段时间中执行某个进程,然后它会在下一段时间跳转并执行另一个进程。CPU由于转换较快,因此使得每个进程好像是同时执行一样。
图20.1表明了Windows操作系统的执行模式。
一个线程则是进程中的执行流程,一个进程中可以同时包括多个线程,每个线程也可以得到一小段程序的执行时间,这样一个进程就可以具有多个并发执行的线程。在单线程中,程序代码按调用顺序依次往下执行。如果需要一个进程同时完成多段代码的操作,就需要使用多线程。
