要掌握多线程,首先你需要了解进程和线程的概念,以及两者之间的关系。 1,进程 进程是程序在处理机中的一次运行。一个进程既包括其所要执行的指令,也包括了执行指令所需的系统资源,不同进程所占用的系统资源相对独立。所以进程是重量级的任务,它们之间的通信和转换都需要操作系统付出较大的开销。 简单来说,进程就是一个正在执行的程序。 每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者叫一个控制单元。 2,线程 线程是进程中的一个实体,是被系统独立调度和分派的基本单位。线程自己基本上不拥有系统资源,但它可以与同属一个进程的其他线程共享进程所拥有的全部资源。所以线程是轻量级的任务,它们之间的通信和转换只需要较小的系统开销。 Java支持多线程编程,因此用Java编写的应用程序可以同时执行多个任务。 3,线程和进程之间的关系 线程就是进程中的一个独立的控制单元。线程在控制着进程的执行。只要进程中有一个线程在执行,进程就不会结束。 一个进程中至少有一个线程。 4,多线程概念 了解了进程和线程以及两者之间的关系,我们就可以得出这样的结论: 单线程:一个进程中只有一个执行路径,即一个线程,那么这个程序称为单线程。 多线程:一个进程中有多个执行路径,即多个线程,那么这个程序就被称为多线程。 5,多线程的好处(意义) 为什么出现多线程? 举个例子:从磁盘读取一个文件需要5秒,处理一个文件需要2秒。 单线程执行顺序:读取文件A、处理文件A、读取文件B、处理文件B。 单线程实现这样的操作共需要14秒,可以说效率非常低,因为从磁盘中读取文件的时候,大部分的CPU时间用于等待磁盘去读取数据。在这段时间里,CPU非常的空闲,可以让它可以做一些别的事情。 通过改变操作的顺序,就能够更好的使用CPU资源。如: 读取文件A、读取文件B(A还未读取完)、处理文件A(B未读取完)、处理文件B。 按照这样的顺序执行只需要12秒。 这样我们就得出了结论:多线程的出现能让程序产生"同时运行"效果。可以提高程序执行效率。 注意:随机性原理,CPU在某一个时刻只能执行一个程序,多个程序执行只是CPU快速的切换完成的。
|