Java并发编程

2021-04-13  本文已影响0人  _小毛驴

并发、并行

并发(concurrent):是同一时间应对(dealing with )多件事情的能力。
并行(parallel):是同一时间动手做(doing)多件事情的能力。
— Rob Pike

并发执行图 并行执行图

同步、异步

从方法调用的角度来讲:

  • 需要等待结果返回,才能继续运行就是:同步;
  • 不需要等待结果返回,就能继续运行就是:异步。
    注意:同步在多线程中还有另外一层意思,是让多个线程步调一致。

单线程、多线程

  1. 单核cpu下,多线程不能实际提高程序运行效率。
    多线程只是为了能够在不同的任务之间切换,不同线程轮流使用cpu,不致于一个线程占用cpu,别的线程没法干活。
  2. 多核cpu可以并行跑多个线程,但能否提高程序运行效率还是要分情况的:
    • 有些任务,经过精心设计,将任务拆分,并行执行,当然可以提高程序的运行效率。但不是所有计算任务都能拆分(参考【阿姆达尔定律】)
    • 也不是所有任务都要拆分,任务的目的如果不同,谈拆分和效率没啥意义。
  3. IO操作不占用cpu,只是我们一般拷贝文件使用的是【阻塞IO】,这时相当于线程虽然不用cpu,但需要等待IO结束,没能充分利用线程,所有才有后面的【非阻塞IO】和【异步IO】优化。

并发的三大特性

上一篇 下一篇

猜你喜欢

热点阅读