1 package code;
2
3 import java.util.Optional;
4 import java.util.concurrent.Callable;
5 import java.util.concurrent.ExecutorCompletionService;
6 import java.util.concurrent.Executors;
7 import java.util.concurrent.ScheduledExecutorService;
8 import java.util.concurrent.TimeUnit;
9
10 /**
11 *
12 * @param toDo
13 * @return
14 */
15 public class ParallelTest {
16
17 private static final ScheduledExecutorService newScheduledThreadPool = Executors.newScheduledThreadPool(3);
18
19 public static Optional doCheck(String toDo) {
20 ExecutorCompletionService> completionService = new ExecutorCompletionService(newScheduledThreadPool);
21 //任务1
22 completionService.submit(new Callable>() {
23 @Override
24 public Optional call() throws Exception {
25 Optional res = null;//TODO
26 if (res.isPresent()) {
27 return Optional.of("TODO");
28 }
29 return Optional.empty();
30
31 }
32 });
33 //任务2
34 completionService.submit(new Callable>() {
35 @Override
36 public Optional call() throws Exception {
37 Optional res = null;//TODO
38 if (res.isPresent()) {
39 return Optional.of("TODO");
40 }
41 return Optional.empty();
42 }
43 });
44 //任务2
45 completionService.submit(new Callable>() {
46 @Override
47 public Optional call() throws Exception {
48 Optional res = null;//TODO
49 if (res.isPresent()) {
50 return Optional.of("TODO");
51 }
52 return Optional.empty();
53 }
54 });
55
56 //任务数
57 int taskSize = 3;
58 try {
59 for (int i=0;i) {
60 Optional ress = completionService.take().get(3, TimeUnit.SECONDS);
61 if(ress.isPresent()) {
62 return ress;
63 }
64 }
65 }catch (Exception e) {
66 return Optional.of("异常");
67 }
68 return Optional.empty();
69 }
70 }