每每面试,面试官总会提到有关多线程的问题。
对于我这种临时抱佛脚的人来说,只能凭着印象去回答,一点底气都没有。
这可能就是我这入门菜鸟一定要遇到的坎吧。
消除恐惧的最好办法就是面对恐惧!坚持,才是胜利!加油!奥利给!
—— 冬泳怪鸽
一、为什么要学多线程
- 为了面试时不会一问三不知
- 为并发编程打好基础,目前在实际工作中,有关线程的代码都被封存了,但实际环境中,经常出现大量请求同一个接口,并发可能会产生一些问题,所以也需要掌握一定的并发知识
二、什么是多线程
在回答这个问题前,先说一下什么是单线程。
单线程:程序执行时,所走的程序路径按照连续顺序排下来,前面的必须处理好,后面的才会执行。
例如:
观众一听到于老师三大爱好,都是齐刷刷一字一句地念:
抽烟!喝酒!烫头!
观众念这些词,就是有顺序地执行,肯定是一个词念完才念下一个,这就是单线程。
接下来说一下什么是多线程,于老师在搞他三大爱好时就像多线程,并发执行。
有人就会问,这三个动作怎么并发执行呢?
这不简单吗?
于老师酒喝多了,抽烟的时候,烟头把头给烫了
三、为什么要使用多线程
使用多线程可以提高程序执行的效率。
举个例子:
工厂需要加工零件240个,工程师甲每小时能加工40个,工程师乙每小时能加工20个。
只让其中一人加工零件,如果是工程师甲负责,就需要6个小时,工程师乙负责则需要12个小时。
让甲乙两个工程师同时加工,则只需要4个小时。
如果把每个工程师看成一个线程,则多线程可以调高执行的效率。
四、多线程应用场景
- 线程之间相互独立,互不影响。
- 一个线程出现问题,不影响其他线程。
五、注意
使用多线程并发执行程序,可以提高执行效率,但随着而来也产生了一个问题:资源抢占。
以第三点举的例子,甲乙两位工程师合作加工零件,会出现一个问题,乙师傅和甲师父同时加工了同一个零件,这就衍生了一个知识点——锁。
锁的知识点,等后面深入,我们再细聊。