210 01 Android 零基础入门 03 Java常用工具类 05 Java多线程 01 Java多线程概述 01 什么是线程 & 什么是进程?

210 01 Android 零基础入门 03 Java常用工具类 05 Java多线程 01 Java多线程概述 01 什么是线程 & 什么是进程?

本文知识点:什么是线程

说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进行了截图记录,没有对截图步骤进行详细的文字说明(后面博主时间充裕了,会对目前的博客编辑修改,补充上详细的文字说明);有些步骤和相关知识点缺乏文字描述,可能会难以理解。读者如有不明之处,欢迎博客私信或者微信(本人微信在博客下方的“关于博主”处)与本人交流,共同进步

什么是线程?

什么是线程?
我们首先要明白什么是进程

什么是进程?

进程是指可执行程序并存放在计算机存储器的一个指令序列,它是一个动态执行的过程。
mark

看到上面这个概念我们可能就懵了。我们一起来想象一下生活中的场景:
我们可能会一边听歌一边在编辑器中敲代码,甚至可能还会偶尔去QQ上回复一下消息。
mark

这个场景中我们涉及到3个软件的使用:
音乐播放器、代码编辑器、QQ
mark

因为这三个软件“同时”一起运行的,所以我们才能很多事情一起完成。
这三个软件可以同时运行,就是我们的进程在起作用。

我们可以打开windows的任务管理器,在任务管理器中可以看到进程这么一个选项卡。
mark
把它打开以后,我们就可以看到当前操作系统中所有所运行的所有进程了。
mark

比如我们看到了记事本软件程序和QQ软件程序对应的进程:
mark

有些软件程序只对应一个进程,比如刚才看到的记事本。有的软件会对应多个进程,比如一些杀毒软件和数据库软件:也就是说一些比较大的软件是由多个进程构成的。
mark

其实早期的操作系统都是单任务的操作系统,也就是在单任务操作系统中,一次只能运行一个应用程序,比如QQ或者播放器,同时只能运行一个程序。一个程序运行结束后,才能执行下一个程序:
mark
比如,你先听歌曲,歌听完了,才能去QQ中回复好友的信息:
mark
mark
mark

而我们现在的操作系统,都是多任务操作系统,即:“同时”可以运行多个应用程序。这就是 进程 在起作用。
mark

言归正传,那到底什么是线程呢?

线程的定义和解释

线程是比进程还要小的运行单位,一个进程可以包含多个线程。

比如一个程序是由多行代码组成的,那么这些代码就可以分为很多块。每个块放到不同的线程中,不同的线程分别执行。

所以我们认为线程相当于一个子程序
mark
mark

我们明白了进程和线程的概念之后,又有了新的问题:
我们知道程序是由CPU运行的,那我们只有一个CPU的情况下,如何保证这么多程序同时运行呢?

这里我们可以想象成,把CPU的执行时间分成很多的小块,每一小块的时间长度都是固定的,这每一个小块我们称之为一个时间片,每个时间片的时间可以定义的非常短,比如说定义为1毫秒(1ms)
mark
音乐播放器、代码编辑器、QQ三个软件同时运行,那么,它们三个如何获取CPU的执行时间呢?
mark
这个其实是随机的,我们可以这么考虑:
我们的音乐播放器运行1ms,即一个时间片之后,它会把CPU的使用权转给代码编辑器,代码编辑器运行1ms之后,又将CPU的使用权转给QQ。
mark
mark
mark
这三个程序就轮流地在很短的时间内,去使用CPU。对于CPU来讲呢,这些软件其实还是轮流运行的。但是由于时间片非常短,即每个软件交叉运行的时间非常短,所以对于我们使用者而言,是毫无感知的。所以,我们就会认为这些软件都是“同时运行”的
mark

以上,就是为什么在只有一个CPU的情况下,这些软件能够同时运行的原因。上面的原理叫做:时间片的轮转,是通过对CPU的时间的轮转来达到“多个软件在一个CPU上同时运行”这样一个效果的。

后续线程系列要学习的内容

mark

posted @ 2020-11-05 16:31  皿哥的技术人生  阅读(110)  评论(0编辑  收藏  举报