[英]Synchronized in lambda blocks in JAVA 8
Can synchronized
be used for some of the code blocks written in lambda expression block. 可以
synchronized
用于用lambda表达式块编写的某些代码块。 With respect to the following code snippet : 关于以下代码段:
workflowTasks.forEach((workflowTask) -> {
String taskName = workflowTask.getTaskName();
if (profileNames.containsKey(taskName) || newSetDuplication.contains(taskName)) {
errorMessages.append(taskName + ",");
}
newSetDuplication.add(taskName);
});
Of course! 当然! Your block of code is logically equivalent to the following, assuming
workFlowTask
is of the type WorkFlowTask
: 假设
workFlowTask
的类型为WorkFlowTask
,那么您的代码块在逻辑上等效于以下代码:
for (WorkFlowTask workFlowTask : workFlowTasks) {
String taskName = workflowTask.getTaskName();
if (profileNames.containsKey(taskName) || newSetDuplication.contains(taskName)) {
errorMessages.append(taskName + ",");
}
newSetDuplication.add(taskName);
}
Obviously, the synchronized
keyword can be used here, although there are many other things to consider before using it, especially within a loop . 显然,可以在这里使用
synchronized
关键字,尽管在使用它之前还需要考虑很多其他事项, 尤其是在循环中 。 Your forEach
lambda is just syntactic sugar for a Consumer<WorkFlowTask>
anyway, which you can also use synchronized
with. 无论如何,
forEach
lambda只是Consumer<WorkFlowTask>
语法糖,您也可以synchronized
与Consumer<WorkFlowTask>
一起使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.