多线程part2-多线程的两个概念

并发(concurrent)

  同一时间应对多件事情的内力

  同一时刻,有多个指令在单个CPU上交替执行

  理解:打游戏的时候,右手操作鼠标,同时用右手喝可乐,手速特别快交替执行,这时,你的右手相当于CPU,执行的对象相当于线程

    家庭主妇做饭、打扫卫生、喂奶,一个人轮流交替做多件事情,这就是并发

并行(parallel)

  同一时间动手做多件事情的能力

  同一时刻,有多个指令在多个CPU上同时执行

  理解:关键点在于同时

     家庭主妇雇佣保姆,一个保姆专门做饭,一个保姆专门打扫卫生、一个保姆专门喂奶,这就是并行

 多线程应用——异步调用

从方法调用的角度来看

需要等待结果返回,才能继续运行就是同步

不需要等待结果运行,就能继续运行就是异步

注意:同步在多线程中还有另外一层意思,是让多个线程步调一致

多线程可以让方法执行变成异步,这就可以让我们实现文件运输的优化,如果是同步情况下,那么读取磁盘文件,光是读取这一个操作就只能眼巴巴的等着他执行完后才能继续执行

应用

  视频文件需要转换格式等操作

  tomcat的异步servlet,让用户线程处理耗时较长的操作,避免阻塞tomcat的工作线程

结论

  单核CPU下,多线程不能实际提高程序执行效率,只是可以在不同的任务之间切换,不同线程轮流使用cpu

  多核CPU下,是否提高程序执行效率需要分情况

    有些任务,经过设计,可以进行拆分,这当然可以提高效率

    也不是所有任务需要拆分

  IO操作不占用CPU,只是我们一般拷贝文件使用的是阻塞IO,这是相当于线程不用CPU但是要一直等待IO结束,没有充分利用线程,所以才有后续的非阻塞IO异步IO的优化

  IO操作是要等磁盘里面的数据读出来进入CPU处理,读数据的时候不归CPU管。但是因为进程需要这个IO的数据,所以需要等待IO结束了才能继续运行(进程阻塞)。

posted @   名泽  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示