多线程系列一:理解多线程在于深深地理解了多任务、进程、多线程、线程

在计算机的世界中,你得看到更加广阔的视野,除了你可能了解的多线程,其实还有着多任务、进程、线程这些概念。

多线程系列

多线程系列一:理解多线程在于深深地理解了多任务、进程、多线程、线程
多线程系列二:手撕多线程,从会三种创建多线程方式开始:除了常见的两种,你是否了解Callable接口方式?
多线程系列三:初遇并发问题:从一个小故事开始,从一行行代码开始**
多线程系列四:停止多线程,你不会还以为是用stop和destroy吧?
多线程系列五:多线程为何要使用休眠?
多线程系列六:线程礼让与强制执行
多线程系列七:纯手绘图解多线程状态+代码示例,就问你怕了吗?

多任务

什么是多任务?,从字面意思理解就简单多了, 字很好理解,不单一个,有两个或两个以上;而 任务 呢?这个也不难,每个进程都可以称作一个任务。

多任务是指用户在同一时间内运行多个进程。

举个生活中的小栗子

当你在上你最喜爱的编程课的时候,你的好兄弟 一颗剽悍的种子 叫你吃鸡,你想啊,难得好兄弟叫你一起开黑,当然是赶紧上号;所以你一边和好兄弟一起打游戏,一边还要看看眼前的老师在敲代码(其实是看老师有没有过来 ),两个任务同时进行。

这节课很快就过去了,快乐的时光总是走得很快很快,下课的你是乎有点恍惚,鸡是吃到了,但是课就有迷了,听得似懂非懂。

不管在以往的生活中,还是上面的比方,你是否会发现,看起来是在做多个任务,但是 本质上我们大脑同一时间依旧只做一件事情。

计算机也是同样如此…

你看计算机能同时运行多个任务,其实是一个错觉。

事实上CPU在某一时刻只会执行一件任务,因为CPU任务调度机制在任务之间的切换速度非常迅速。
多线程系列一:理解多线程在于深深地理解了多任务、进程、多线程、线程_第1张图片

进程

除了看上面的多任务,想必你在游荡计算机世界里也没少听说过进程这个概念。

在操作系统中一个任务就是一个进程,也就是说你运行的程序就是进程,你打开的微信、游戏、浏览器等等都是一个个的进程。

那进程就只能干一件事情吗,当然不止,正如现在在使用浏览器写文章的我,写文章是一个页面,打开新页面搜歌又是一个页面,一边听歌一边无休止的写。

CSDN中写文章里的功能只是写这个功能吗,它可以同时在我写的时候一边统计字数和行数,还有当前是几行几列。听歌只有声音吗,它还有歌词呢。

在一个进程中,需要同时运行多个"子任务",我们可以称进程内的这些"子任务"是线程。下面线程中会说到。

一个进程可以有多个线程,如视频中可以同时听到声音,看一帧帧图像,还可以跟着看弹幕和刷弹幕,等等…

进程有一定的生命期,所以是执行程序的一次执行过程,是一个动态概念。是系统资源分配的单位。

说起进程不得不提和进程很类似的 程序

可以简单的理解:程序其本身没有任何运行的含义,是一个静态的概念。

多线程

上面进程举的栗子中,进程每做一件事情,就需要有一个线程。那么一个进程要做一件事情,就需要至少有一个线程。如浏览器这种进程可以有多个线程,多个线程可以同时执行。

多线程执行方式和多进程可以说一样的,是由操作系统在多个线程之间快速切换,短暂交替运行,所以看起来像同时执行一样。

对比普通方法调用&多线程调用

普通方法调用

主线程跑下来调用run方法,run方法执行完,依然回到主线程。

主线程只有一条执行路径

多线程系列一:理解多线程在于深深地理解了多任务、进程、多线程、线程_第2张图片
多线程调用

分工协作各走各的,主线程走主线程的,子线程走子线程的,多线程调用多条路径执行,而不像普通调用只执行主线程一条。

多线程可以有多条执行路径,主线程与子线程并行交替执行。

多线程系列一:理解多线程在于深深地理解了多任务、进程、多线程、线程_第3张图片
但是在多线程当中,除了每个线程交替运行速度快,让你看起来如同同时执行一样的错觉;是出现在只有一个CPU的情况下。

多核CPU就不再是这种快速交替运行的错觉了,多核CPU是真正实现同时执行多线程。

线程

当看到这里,相信你对线程这个概念已经不再陌生了,多线程很简单指的是执行多条路径,那线程呢?

线程是独立的执行路径。

最后:

为了更好的阅读体验,我把想说的话都放在了下面,嘿嘿。

我是一颗剽悍的种子 把我会的,认真的分享 是我写博客一直不变的信条。
如果你能看到这篇博文,说明咱们还是很有缘的;希望能带给你一些许帮助,创作的不易,
把我文章的知识带走,你的三连留下,点赞,评论,关注,是我最大的动力。

谢谢你这么可爱,还关注我~

你可能感兴趣的:(多线程&并发)