学习到如下几种方法:
1、对于单个的线程,可以采用Future.get()的方法,任务执行完毕后才能拿到结果。
2、对于多个线程,可以采用executor.awaitTemination()的方法,伪代码如下所示:
for(int i = 0;i < n;i++){
executor.execute(task(i));
}
executor.shutdown();
executor.awaitTemination(Long.MAX_VALUE,TimeUnit.SECONDS);
3、可以采用闭锁,制造阀门效应,伪代码如下所示:
#主线程执行
CountDonwLatch done = new CountDownLatch(n);
for(int i = 0;i < n;i++){
executor.execute(task(i));
}
done.await();
#多线程任务中执行
doTask(i);
done.countDown();