经常面试的时候,会被问到多线程!知道是怎么回事,但却用的很少。
今天,小编带带着大家看看身边的多线程。先将一个工作中遇到的趣事把。
近期比较忙,也在学习多线程。
一日同事问我:你一天感觉好忙啊,那些事情不能一个个做么?
我看了他一眼,便问道:你知道多线程吗?
同事说:知道呀。用过不少。
我跟着说:我每天很忙的原因呢,是因为很多人同时找我解决需求。所以很忙。为什么不能一个个做呢?跟你打个比方吧,就跟饭店一样,同时去很多桌子客人,厨师为什么不一桌子一桌子上菜,而是一个桌子上一个呢?为了堵住每个桌子人的嘴!也就是说要同时兼顾其他人感受,即提高用户体验。
那究竟是怎么做呢。就是把自己的一个小时分成很多个小的不等时间段。每个时间段去做不同的事情、。有可能抄完一盘菜,有可能只是下锅;这时候每个菜呢味道不一样,所以需要不停的切换炒菜的流程(“切换上下文”)。有时候同时两个菜可能会同一时间点放调料**(竞争资源);就会产生菜的味道串味的线上(线程不安全);同时呢,会额外增加炒菜难度。增加资源消耗,也就是厨师超多个菜的时候,那专注的表情的原因;
为了解决上面的问题:就有了一系列的方案,比如乐观锁,悲观锁,同步代码块,JVM锁的升级等一系列问题。
工作也是一样,正是因为多线程处理各个人的需求,所以额外需要花费比常人更多的精力去解决问题。
优点:每个需求都能够及时的去解决,但未必同一时间解决;至少在能承受范围内
缺点:比较消耗CPU,也就是忙。
所以呢,这就叫多线程。计算机和人一样。所以会出现多线程,到现在发展称多核多CPU。多线程过程中会遇到很多问题,核心就是各个人能力参差不齐,好比磁盘,固态硬盘,内存,缓存这几个读写速度不一样。若想要高效,只能因材施教。即计算机中的三级缓存。**
打个比方:CPU处理一个请求只需要10毫秒。但是呢读写需要20秒,如果单线程,没有缓存的话,那将严重影响用户体验。这就好比是厨师为什么有一个配菜的。高级厨师呢有很多个配菜一个道理。
。。。。。。。。
聊到这些呢,同事们都笑了。原来如此
未完待续。。。。。。。。
多线程,厨师,饭店,工作之间到底有什么关系呢?
最新推荐文章于 2020-10-26 20:01:39 发布