​计算机上可以运行程序,每一个正在运行着的程序都被称为“进程”,每个进程都拥有独立的系统资源以及地址空间,在没有进程允许的情况下,另一个用户进程不能访问这个进程的地址空间。进程可以同时执行,这个特性被称为“并发”。很多读者不理解为什么计算机在只有一个CPU的情况下能够让多个进程并发执行,这是因为CPU能够在多个进程之间轮换执行,因为执行进程的速度非常快,并且在各进程之间的切换速度也非常快,所以导致用户感觉到这些进程是同时执行的。

线程是进程的组成部分,一个进程中可以包含多个线程,每个线程负责完成一个支线任务,多个线程也可以并发执行。我们可以用一个形象的例子来描述进程和线程的关系:一个正在施工的筑工程队就相当于一个进程,这个工程队有一个总体任务:修建楼房。工程队内部又可以分为多个小队,每个小队负责的工作不一样,有的小队负责运输建筑材料,有的小队负责搅拌水泥,有的小队负责砌砖,还有的小队负责给工人做饭,工程队的中的每一个小队都相当于一个线程,各小队都有自己独立的任务,并且能同时工作。从这个比喻可以看出:线程和进程的关系就是局部与整体的关系,但是需要注意:线程并不独立拥有资源,每个线程都与同一进程下的其他线程共享整个进程的资源。正因为同一进程下的多个线程是共享资源的,所以在开发过程中必须小心,不能让一个线程在享用资源时妨碍其他线程。线程的并发执行也是通过CPU在各线程间轮换执行来实现的,但相较于进程之间的切换,线程的切换速度会快的多。​

每当一个程序开始运行时,系统就会创建一个进程,并且同时在这个进程下创建一个主线程。主线程可以根据需要再创建出其他线程,这些线程被称为“子线程”。主线程和子线程是相互独立的,也就是说:主线程执行结束后,子线程依然可以执行,但通常情况下我们都会让主线程最后结束执行。​

多个线程同时执行能够让程序的执行效率更高,例如在使用QQ聊天软件时,可以在发送消息的过程中同时接收对方传过来的文件,发送消息和接收文件实际上就是由两个线程来完成的,由于线程具有良好的并发性,所以不会出现在发送消息时接收文件任务暂时停止的现象。

本文字版教程还配有更详细的视频讲解,小伙伴们可以点击这里观看。