在JDK1.8之前,我们将使用未来和可召唤来使用旋转查询来实现异步采集结果
JDK1.8中提供的完整图提供了异步功能编程。它可以帮助我们简化异步编程的复杂性,通过回调处理计算结果,并提供转换和组合的方法。
1.1创建完整的未来对象
异步代表异步
RunAsync和SupplyAsync之间的区别在于,前者没有结果,后者将返回
默认线程池是forkjoint.commonpool()
getNow()表示在计算后,如果返回或投掷异常的结果是正常的,否则它将返回给定值
join()返回计算结果或投掷未选中的异常(PloteionException)
1.3计算处理
当计算阶段结束时,触发以上四种方法
双香剂有两个参数,代表计算的回报值,异常
返回的值不是原始返回值,而是子返回的值
公共完整的Futurethenaccept(消费者 super T> 行动)公共完整的Futurethenacceptasync(消费者 super T> 行动)公共完整的Futurethenacceptasync(消费者 super T> 操作,执行人)仅消耗结果,无返回值
应用程序触发该函数作为完整的功能
在触发消费者之前,接受者已完成
执行ALLOF以完成计算
执行完成后,ANYOF将执行计算
让我们谈谈异步和无异步之间的区别
有一种异步方法。在任务之前和之后共享线程池的方法没有异步方法。第二个任务使用forkjoin线程池在上一篇文章中解释,并且不再补充代码测试。
1 thenrun/thenRunAsync执行第一个任务后执行第二个任务。也就是说,第二个任务是第一个任务的回调。但是在任务之前和之后没有参数传输,第二个任务没有返回值
2 ThenAccept/ThenAcceptasync执行第一个任务并执行第二个任务。第一个任务的结果将传递到第二个任务中。第二个任务不返回该值,它是消费者
3然后apply/thadplyasync执行第一个任务,第二个任务的结果将使用第一个任务的结果将要传递到第二个任务中。第二个任务还具有返回值,即函数
4异常执行异常回调。异常发生作为参数,传递给回调方法
5当Complete与质量相似,但是在回调期间将返回例外。
6句柄类似于Thapply,但它将在回调中返回异常,然后将当时的方法直接扔到外部
1,组合关系表明这两个任务是组合的。它们中只有两个正常完成,然后执行一定任务。
thencombine:两个任务的执行结果将作为一种方法传递到指定的方法中,并且有一个返回值thenAcceptboth:两个任务的执行结果将传递到指定的方法中,返回值的值将不会返回。RunafterBoth不使用执行结果作为参数的方法,也没有返回值。
2或组合关系表明这两个任务是组合的。只要执行其中一项任务,就会执行任务。
Applipoither:已完成的任务是作为方法完成的,传递给指定方法,并且有一个返回值Accepteither:已执行的任务已作为方法完成,将其传输到指定的方法,没有返回valialunaftereither:执行结果将不会用作方法,而无需返回值。
3 Allof
4任何人
5个舌头
如果完整图实例的结果不是null,则根据结果返回新的完整图实例;
如果完整的图实例为null,则执行此新任务
原始:https://juejin.cn/post/7095284393635217422