目录
商城业务-异步-异步复习
商城业务-异步-线程池详解
商城业务-异步-CompletableFuture
商城业务-异步-CompletableFuture-启动异步任务
商城业务-异步-CompletableFuture-完成回调与异常感知
商城业务-异步-CompletableFuture-handle最终处理
商城业务-异步-CompletableFuture-线程串行化
商城业务-异步-CompletableFuture-两任务组合-都要完成
商城业务-异步-CompletableFuture-两任务组合-一个完成
商城业务-异步-CompletableFuture-多任务组合
商城业务-异步-异步复习
什么是异步?异步就是创建一个线程执行任务
创建线程的方式有以下四种:
①继承Thread
运行结果:
②实现Runnable
运行结果:
③实现Callable
Callable支持泛型,泛型类型即返回结果类型
FutureTask的get()方法是阻塞等待当前线程任务执行完成,拿到返回值
运行结果:
FutureTask的构造器也支持Runnble接口实现类,并用result封装结果
④线程池
说明:当前系统中线程池只能有一两个,异步任务,交由线程池自己去执行
execute和submit的区别:execute()方法没有返回值,submit()方法是有返回值的
总结:
商城业务-异步-线程池详解
线程池(ThreadPoolExecutor)、Executors线程池工具类、volatile关键字、Lock与synchronized的区别_兰交余文乐的博客-CSDN博客
商城业务-异步-CompletableFuture
1、2、3可以异步完成,4、5、6依赖于1的完成,4、5、6又可以异步完成。需要使用CompletableFuture进行异步编排
商城业务-异步-CompletableFuture-启动异步任务
创建异步对象的四个方法:
runAsync无返回值,supplyAsync有返回值,都可以指定执行的线程池
商城业务-异步-CompletableFuture-完成回调与异常感知
whenComplete的两个参数:一个是成功后的返回结果,一个是返回的异常
运行结果:
exceptionally接受一个异常类型参数,返回一个结果
运行结果:
whenComplete只能监控是否出现了问题,不能修改返回结果。exceptionally可以修改返回结果。
商城业务-异步-CompletableFuture-handle最终处理
handle可以获取成功后的返回结果和出现异常的异常类型,并且可以修改返回结果。
handle()方法接收两个参数,一个是返回值一个是异常,返回一个结果
运行结果:
商城业务-异步-CompletableFuture-线程串行化
① thenRunAsync
运行结果:
说明:不能获取上一个任务的返回结果
②thenAcceptAsync
运行结果:
说明: 可以获取上个任务的返回结果,但是不能返回结果
③thenApplyAsync
运行结果:
说明: 可以获取上一个任务完成的返回值,并返回一个返回值
商城业务-异步-CompletableFuture-两任务组合-都要完成
①runAfterBothAsync(other,action,executor) :other->组合任务,action->两个任务完成之后的任务,executor->指定线程池
说明:不能接收之前两个任务的返回值,也不能返回结果
运行结果:
②thenAcceptBothAsync
说明:可以接收之前两任务的返回值,但不能返回结果
运行结果:
③ thenCombineAsync
说明:可以接收两个任务的返回值,并且返回一个结果
运行结果:
商城业务-异步-CompletableFuture-两任务组合-一个完成
运行结果:
说明:两个任务的返回值类型要一致
运行结果:
商城业务-异步-CompletableFuture-多任务组合
①allof
②anyof
运行结果:



