题目:模拟十匹马从准备比赛到比赛结束;
ExecutorService executorService = Executors.newFixedThreadPool(10);
List<Future<Boolean>> futureList = new ArrayList<>();
CyclicBarrier cyclicBarrier = new CyclicBarrier(10);
for (int i = 1 ,j = 10;i<=j;i++ ){
final int x = i;
Future<Boolean> submit = executorService.submit(new Runnable() {
@Override
public void run() {
//马儿准备
try {
System.out.println("当前第 "+x+" 匹马儿准备完毕");
cyclicBarrier.await();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}
System.out.println("第 "+x+" 匹马儿到达终点");
}
}, true);
futureList.add(submit);
}
futureList.stream().forEach(
booleanFuture -> {
try {
booleanFuture.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
);
executorService.shutdownNow();