小伙伴们大家好啊,这里是布丁萨玛,JAVA多线程也是面试的常客,所以为了之后的面试,也为了使自己能够更好的(zhuang)步(bi)。所以我们一期来看一下什么是多线程。
因为自己也是初学者,并且没有什么项目实习的经验,所以写出来的东西都是自己理解到的东西,但是我们尽量已轻松的方式给小伙伴们讲出来,如果有什么不对的地方,欢迎大家在评论区指(si)出(bi),谢谢。
ok,我们开始吧。
在学习之前,我们首先要搞清楚两个问题。
- 什么是多线程?
- 我们为什么要学习多线程?
只有搞清楚这两个问题之后我们才能够有目的的去学习。
什么是线程?
什么是线程?
按照官方的定义:
-
是一个程序就是一个
进程
,而一个程序中的多个任务则被称为线程
。 -
进程是表示资源分配的基本单位,线程是进程中执行运算的最小单位,亦是调度运行的基本单位。
前方持续高能!!!!
SO?WHAT?
这是啥?
啥玩意?
看不懂啊?
咋能啊?
相信有的小伙伴会和笔者一样刚看到的时候是懵逼的。
没错,说的就是你
OK,没关系。
今天呢,在我们现场,我们请到了世界著名
嘉宾,人类最应该感谢得人,被笔者评为世界十大最受委屈
的人。
那就是 当当当当
厕所先生
鼓掌 👏👏👏👏👏
厕所先生:大家好,我是厕所先生,今天很高兴,能来到布丁的节目。我要感谢我的母亲
布丁:好了好了,厕所先生不要说了,说正经的。
厕所先生:
- 这里呢我们就可以把一个厕所当做一个进程,然后呢。里面有好多坑,我们就可以把里面的一个一个坑当做一个进程。而进程就是厕所里面最小的单位。
所以大家只需要记住
厕所=线程
坑=进程
布丁:正如厕所先生所说,进程就是一个坑。但是呢没有这个坑又不行。没有坑那就不是厕所了。
所以程序=屎。所以大家辞职吧。不要写程序了。
布丁:好了我们说正经的。
假如进程是一间宿舍那么线程是什么?
是床
假如进程是一间餐厅那么线程又是什么?
是桌子
假如进程是一个厨房那么线程是什么?
是炉灶
Ok,相信经过上面的这些东西的洗礼,我们就可以大致知道线程
和进程
都有一些什么特点了。
这里我总结了4点。
- 1、进程只能有一个,线程可以有n个
- 2、进程包含线程
- 3、多个线程可以同时执行
- 4、多个线程之间不会互相影响
- 5、进程结束,线程必定结束
关于上面几点,我们就用我们就请出我们最贵的厕所
来解释一下。
鼓掌 👏👏👏👏👏👏
布丁:那么请问厕所先生,您对于上面几点有什么想说的呢?
厕所:干于以上给点,鹅觉得所的灰常得。
布丁:咳咳,厕所先生,麻烦您先冲下厕所再说话。
厕所先生:哗啦啦~~,咳咳,关于以上几点啊,我觉得说的非常对。
-
一个厕所最少要有一个坑,否则就不是厕所。
-
同时我的每个坑都可以同时使用。如果一个坑炸了,别的坑也可以使用。
-
但是如果厕所炸了那么坑也就不能用了。
布丁:好的,厕所先生说的非常好。如果还有小伙伴不懂得话,麻烦出门左转去厕所体验一下。
OK,我们第一个问题说完了,那么我们来讲第二个问题吧。
我们为什么要学习线程?
厕所先生:要说多线程是干什么用的,又为什么需要多线程呢?那么就要从拉屎开始说起了。
厕所先生:就比如说我里面只有一个坑。但是呢,恰逢当前学校做的饭有点问题。一个班的同学都拉肚子了。
- 如果是单线程的情况那么一个同学去拉屎了,然后其他同学就只能等着,如果这个同学拉的快还好说,如果不快,那不就尴尬了。是吧。
- 这里呢如果我们有了多线程的话,那就会多好多的坑,
- 那么同学们就可以愉快的一起上厕所了,你不影响我,我不影响你。
这就是多线程的好处。我们使用多线程就可以使我们程序效率更高。
布丁:那为什么不建个几百个坑啊,那岂不更快?
厕所先生:我没意见啊。那到时候整个学校怕不如直接改名叫厕所得了。
布丁:我明白了,线程多是会占用我们的资源的。所以我们要在性能和资源之间找到一个平衡点
。
厕所先生:没错,就是这样。
布丁:OK,感谢这一期厕所先生的做客,以他自身的经历给我们讲了
- 什么是多线程?
厕所=线程 坑=进程 - 我们为什么要使用多线程?
为了防止拉屎等很久
那么本期就到此结束了,我们下一期就来讲下如何实现多线程,到时候可能还需要厕所先生来做客。小伙伴们有什么想说的。可以在评论区告诉我们。谢谢。
转载:https://blog.csdn.net/m0_37859502/article/details/105546490