添加到ArrayList中时stream()vs parallelStream()

时间:2018-12-19 08:22:43

标签: java-8 parallel-processing functional-programming java-stream

我有这段代码

List<UserNotification> userNotifications = new ArrayList<UserNotification>();

teatreAlertNotifications
            .parallelStream()
            .forEach(can -> userNotifications.add(new UserNotification(can)));

但是由于ArrayList是不同步的,所以我认为这是不好的做法,我应该改用.stream()

1 个答案:

答案 0 :(得分:5)

或者只是:

List<UserNotification> userNotifications = teatreAlertNotifications
           .parallelStream()
           .map(UserNotification::new)
           .collect(Collectors.toList());

这称为不必要的副作用,通常在文档中不建议使用。

您可以保留原始代码,但使用同步的数据结构(线程安全),但是在这种情况下,不能保证元素的顺序。