1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.rribbit.execution;
17
18 import java.util.Collection;
19 import java.util.Collections;
20 import java.util.stream.Collectors;
21
22 import org.rribbit.ListenerObject;
23 import org.slf4j.Logger;
24 import org.slf4j.LoggerFactory;
25
26
27
28
29
30
31
32
33
34
35
36 public class MultiThreadedListenerObjectExecutor extends AbstractListenerObjectExecutor {
37
38 private static final Logger log = LoggerFactory.getLogger(MultiThreadedListenerObjectExecutor.class);
39
40 @Override
41 protected Collection<ExecutionResult> doExecuteListeners(Collection<ListenerObject> listenerObjects, Object... parameters) {
42
43 if(listenerObjects.isEmpty()) {
44 log.debug("No ListenerObjects to process");
45 return Collections.emptyList();
46 } else if(listenerObjects.size() == 1) {
47 log.debug("There is only one ListenerObject, not creating new Thread, executing it in this Thread");
48 return Collections.singletonList(this.executeSingleListenerObject(listenerObjects.iterator().next(), parameters));
49 }
50
51 log.debug("Creating Threads for each ListenerObject and executing");
52 return listenerObjects
53 .stream()
54 .parallel()
55 .map(listenerObject -> this.executeSingleListenerObject(listenerObject, parameters))
56 .collect(Collectors.toList());
57 }
58 }