1. 进程与线程
1.1 进程
在提到线程之前,就得谈一谈进程。进程的概念在课本中的描述是:程序的一个执行实例,正在执行的程序;内核观点是:担当分配系统资源(CPU、内存)的实体。看到这里是不是觉得,那进程到底是什么,还是不懂,下面我将举例来说明进程究竟是什么?进程就像是学生,当学生第一次报道时,需要在学校填写你的详细信息,如身份证号、姓名、年龄,报道之后,学校会根据一定的顺序,给你分配一个在学校属于你的学号,这相当于你在学校的标识符;那么这么多学生,学校要怎么管理呢?这就是学校的教务管理系统要做的事情,它会把每个人的信息统计起来,然后存放在教务管理系统那儿,这样,每一个学生的信息就会被集中保存或者说处理或者说联系在了一起,方便学校去修改或者删除或者添加每个学生的信息。那么,学生是用学生的各种信息(如学号、身份证号、姓名等)描述的,进程用什么描述的呢?描述进程的是PCB,它保存着进程的相关信息(如标识符、状态、优先级等等)。学生的学生信息是用教务管理系统组织起来的,那么进程是用什么组织起来的呢?其实,所有运行在系统里的进程都是用带头结点的带环的双向链表组织起来的。
综上解释,重要的就是两句话:1.当执行一个程序即产生一个进程时,需要PCB把它描述起来;2.当执行一个程序即产生一个进程时,需要把这个进程的信息用链表的形式组织起来。
下面,来看一看在Windows操作系统下的进程是什么样子?打开Windows操作系统的任务管理器---点击进程即可:
以上是关于进程概念的简单介绍,想要深入了解进程,可以查看我的关于进程的博客。
1.2 线程
下面介绍什么是线程?
一个运行的程序即进程可以同时执行有多个任务,如QQ.exe可以接收文件、下载文件、发消息、发表情包等等,这些都是一个进程同时执行的多个任务;那线程就是一个一个的任务,如接收文件是一个线程、发表情包又是一个线程,所以线程可以理解为进程中独立运行的子任务。
2. 创建线程
了解了什么是线程之后,怎么来创建线程呢?
2.1 继承Thread类创建线程
首先,简单来看一看Thread类的源码以及在创建线程时用到的初始的run()方法:
使用继承Thread类创建线程时,首先需要创建一个