Java里简单快速实现并行操作

在这个controller里边

这3个方法是模拟了3个查询

他们分别会耗时几百毫秒

那问题是什么呢

现在是

这3个查询其实没有任何依赖关系

就是说你想先查谁就

先查谁

最后只要把他们3个都查出来就行了

但现在这样写的话呢他们就是串行的

也就说查完1、再查2、再查

总耗时就是他们三个加一起

后来呢我就想到了

能不能模仿这个JS里的Promise

封装这么一个方法

我给他加了一个olit

这样的话呢这三个字任务就会

并行的去

执行

等最慢的那个执行完之后呢

这个方法就走完了

不过我发现

原来啊 JDK 1.8里边(往后)

他有默认的(方式)支持了这种类似的方法

就是这个CompletableFuture

allOf 然后里边还是用这个点runAsync

来创建子任务

但是呢

这里面最好我们自己准备一个线程池

你不准备这个线程池也可以

他用的就是一个公用的现成池

那个现成池就不太适合

带I/O的这种操作

他就比较适合

计算密集型的任务

所以呢我准备了一个线程池,这样来执行

我们来看一下这3个的效果哈

我们先来第一个大家看

比较慢是吧

我们再看第2个

明显就会快了

我们再看第3个

一样的

最后更新于