可以将synchronized
用于一些用lambda表达式块编写的代码块。关于以下代码段:
workflowTasks.forEach((workflowTask) -> {
String taskName = workflowTask.getTaskName();
if (profileNames.containsKey(taskName) || newSetDuplication.contains(taskName)) {
errorMessages.append(taskName + ",");
}
newSetDuplication.add(taskName);
});
当然!您的代码块在逻辑上等效于以下内容,假设workFlowTask
的类型为WorkFlowTask
:
for (WorkFlowTask workFlowTask : workFlowTasks) {
String taskName = workflowTask.getTaskName();
if (profileNames.containsKey(taskName) || newSetDuplication.contains(taskName)) {
errorMessages.append(taskName + ",");
}
newSetDuplication.add(taskName);
}
显然,可以在这里使用synchronized
关键字,尽管在使用之前还有许多其他事情要考虑,特别是在循环中。无论如何,你的forEach
lambda只是Consumer<WorkFlowTask>
的语法糖,你也可以使用synchronized
。