可以将synchronized
用于一些用lambda表达式 block 编写的代码块。关于以下代码片段:
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
与。
关于java - 在 JAVA 8 的 lambda block 中同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49053631/