Если я вас хорошо понял, вы хотите создать параллелизм при выполнении разных задач, а затем дождаться завершения всех из них, чтобы продолжить. Это то, что вы хотите? Если ваш ответ «да», то, возможно, вы могли бы использовать фреймворк «fork / join» (Java 7)
Вот фрагмент кода, взятый из этой статьи Брайана Гетца (IBM Java guru):
public class MaxWithFJ extends RecursiveAction {
private final int threshold;
private final SelectMaxProblem problem;
public int result;
public MaxWithFJ(SelectMaxProblem problem, int threshold) {
this.problem = problem;
this.threshold = threshold;
}
protected void compute() {
if (problem.size < threshold)
result = problem.solveSequentially();
else {
int midpoint = problem.size / 2;
MaxWithFJ left = new MaxWithFJ(problem.subproblem(0, midpoint), threshold);
MaxWithFJ right = new MaxWithFJ(problem.subproblem(midpoint +
1, problem.size), threshold);
coInvoke(left, right);
result = Math.max(left.result, right.result);
}
}
public static void main(String[] args) {
SelectMaxProblem problem = ...
int threshold = ...
int nThreads = ...
MaxWithFJ mfj = new MaxWithFJ(problem, threshold);
ForkJoinExecutor fjPool = new ForkJoinPool(nThreads);
fjPool.invoke(mfj);
int result = mfj.result;
}
}
В противном случае, если вам не нужен параллелизм и вы просто хотите подождать некоторое время, используйте функцию Thread.Sleep(int miliseconds)
.