关于Reactive,非阻塞的实现,具体是什么,后面再说。
Reactive实现框架
RxJava:Reactive Extensions
Reactor:Spring WebFlux Reactive类库
Flow API:java9 Flow API 实现
先说说串行并行。
对于现在大多数编程来说,都是阻塞式的,或者说是串行的,下面一行代码依赖上一行代码,上面执行完才会执行下面的。那这样有一个不好的地方就是浪费时间,阻塞式会导致性能瓶颈,那增加线程呢?会引起资源竞争和并发的问题,而且并行也不能解决所有问题。接下来举两个例子
串行:
/**
* 阻塞数据加载(串行)
*/
public class DataLoader {
public final void load() {
long startTime = System.currentTimeMillis(); // 开始时间
doLoad(); // 具体执行
long costTime = System.currentTimeMillis() - startTime; // 消耗时间
System.out.println("load() 总耗时:" + costTime + " 毫秒");
}
protected void doLoad() { // 串行计算
loadConfigurations(); // 耗时 1s
loadUsers(); // 耗时 2s
loadOrders(); // 耗时 3s
} // 总耗时 1s + 2s