多线程
正常来说,由一个线程串行执行的程序,可以通过多线程的方式进行拆解
其中单线程程序可以分为两种:
- IO密集型
- 计算密集型
我们使用多线程编程,主要是为了充分发挥当前多核PCU的计算能力,使并发变为并行。
在程序间没有相互依赖关系的情况下,会极大提高程序的执行效率。并且会随着CPU核心的提升,理论上效率会越来越高。
但现实情况并非理想,很多程序中的步骤都是相互依赖的,即A依赖B,B依赖C,C依赖D。需要考虑 一致性成本的话,并发执行的效率会大大折扣,会随着CPU核数的提升而降低。
反应式编程
反应式编程,这是一个新的概念,不同于响应式编程,函数式。是一种基于函数式编程非阻塞方式来处理数据流的。
简单的,对于Java来说,可以理解为非阻塞的基于时间流的编程范式。
它的兴起,与
Java的绿色线程,Event-loop
Future、Promise(ES6)
Rx系列
Actor模型(基于消息传递)
都有很大的关系
反应式编程的宣言:
- responsive(响应式的)
- resilient (回弹)
- elastic (可伸缩)
- message-driven(消息驱动)
这是一个由三个大公司Pivotal、Netflix等组成的小组联合声明的
上图说话: