不积跬步,无以至千里。不积小流,无以成江海。
Future
引用:《线程池方法 Submit 与 Execute 的区别》文章。
execute 接口是无返回值的,与之相对应的是一个有返回值的接口Future submit。
get() 和 complete(T value)
get(): 方法会阻塞在那,直到结果返回。
complete(T value): 所有阻塞在get()方法的线程都将获得返回结果。
示例:
1 |
|
结果:
1 |
|
提交任务:runAsync 与 supplyAsync
runAsync(Runnable): 无返回值。
示例:
1 |
|
结果:
1 |
|
supplyAsync(Supplier): 有返回值。
示例:
1 |
|
结果:
1 |
|
thenRun、thenAccept 和 thenApply
thenRun(Runnable):
后面是一个无参数、无返回值的方法,最终的返回值是CompletableFuture
1 |
|
thenAccept(Consumer):
后面是一个有参数、无返回值的方法,最终的返回值是CompletableFuture
1 |
|
结果:
1 |
|
thenApply(Function):
后面是一个有参数、有返回值的方法,最终的返回值是CompletableFuture
1 |
|
结果:
1 |
|
allOf 和 anyOf
allOf:
等待所有 CompletableFuture 结束之后再继续做下面的事,返回值是 CompletableFuture
anyOf: 只要有一个 CompletableFuture 结束就可以做下面的事,返回值是 CompletableFuture