多线程是啥想必已经不是什么秘密了,用一个现实中的新闻来映射一下:

33岁的长沙男子袁政益,同时交了至少17名女友。他以不同身份、不同方式向众女友“借钱”,后因驾车发生交通意外,袁政益颅内出血当场昏迷,结果探望女友来了17个... ...

 

上述新闻是一个真实事件,当时我们还调侃,这个男的多线程玩得很溜啊,可以说这个男的时间管理非常合理,最大程度的使用了自己的资源使用效率,让17个线程彼此都不知道彼此,结果人在做天在看,当自己宕机之后,17个线程全部来获取资源的时候... ...

 

上面这个新闻已经把多线程体现的明明白白的了。

 

多线程说白了是为了合理的使用系统资源,但是其依旧是一个同步处理机制,对于单个CPU来说,也是一个线程执行结束后,切换到另一个线程再执行,只不过CPU的处理速度非常快,当CPU处理结束之后,其余的操作,比如IO操作就要慢特别多,这个时候如果等待IO操作结束,再执行下一个任务,CPU就会在原地等待好久,为了能够让CPU能够合理的使用,在运行期间多干活,多线程就会在CPU等待的这段时间,让CPU去干别的活。

 

看了下面这个图基本上多线程是什么回事应该就会明白了,灰色是等待事件,彩色是cpu工作事件,可以看到多进程让cpu的空闲等待事件变少。值得注意的是途中CPU工作事件中深棕色部分,这一部分是进行进程切换的时间。

多线程 _tobytes 多线程恋爱_java

 

 

但是CPU在切换线程消耗的资源对于计算方面没有任何贡献,也就是说频繁的切换线程会让资源的使用效率降低,物极必反。

 

多线程并不是万能的,没有多线程也是可以的,提高资源的使用效率也是有其他途径~

 


此篇文章也不是什么教程,就是记录一下自己,要不然记忆越来越模糊,我怕我没有机会,跟你说一声再见,因为也许就再也想不起你~