Java: Многопоточность -Wait / notifyAll Question

У меня есть класс, который порождает кучу потоков и должен ждать, пока все порожденные потоки будут завершены. (Мне нужно рассчитать время для завершения всех потоков.)

MainClass порождает все потоки, а затем проверяет, все ли потоки завершены, прежде чем он сможет назвать себя завершенным.

Будет ли работать эта логика. Если да, то есть ли лучший способ сделать это? Если нет, я хотел бы лучше понять этот сценарий.

class MainClass{
    private boolean isCompleted;
    ...
    for(task : tasks){
        threadpool.execute(task);
    }

    for(task : tasks){
        if(!task.isCompleted()){
            task.wait()
        }
    }

    isCompleted = true;
}


class Task{
    public void run(){
        ....
        ....
        synchronized(this){
            task.completed = true;
            notifyAll();
        }
    }
}
5
задан Asynkronos 9 June 2011 в 18:13
поделиться