java – 如何并行化创建复杂对象的步骤?
发布时间:2020-12-15 04:33:28 所属栏目:Java 来源:网络整理
导读:class MyItem { private param1,param2,param3;}MyItem item = new MyItem();computeParam1(item);computeParam2(item);computeParam3(item);waitForAllParamsToBeSet(); 每个步骤彼此独立,并且每个步骤将参数写入对象作为最终结果. 这些方法与它们的逻辑完
class MyItem { private param1,param2,param3; } MyItem item = new MyItem(); computeParam1(item); computeParam2(item); computeParam3(item); waitForAllParamsToBeSet(); 每个步骤彼此独立,并且每个步骤将参数写入对象作为最终结果. 如果可能的话,我怎么能将这些步骤并行化? 解决方法
由于所有的computeParamX()接受一个MyItem参数并且返回void,因此它们具有
Consumer<MyItem> 的签名.因此,您可以并行执行它们在并行流的.forEach()中调用它们,如下所示:
final MyItem item = new MyItem(); Stream.<Consumer<MyItem>>of(this::computeParam1,this::computeParam2,this::computeParam3) .parallel() .forEach(c -> c.accept(item)); 由于.forEach()是终端操作,它将阻塞直到所有操作完成,因此您可以在返回后安全地使用item对象. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |