Trong chương trình của tôi, tôi đang tạo một số luồng trong phương thức main(). Dòng cuối cùng trong phương thức main là một lời gọi đến System.out.println(), mà tôi không muốn gọi cho đến khi tất cả các luồng đã chết. Tôi đã thử gọi Thread.join() trên mỗi thread tuy nhiên mà khối mỗi thread để họ thực hiện tuần tự thay vì song song.Làm cách nào để tạm dừng chính() cho đến khi tất cả các chuỗi khác đã chết?
Có cách nào để chặn luồng chính() cho đến khi tất cả các chuỗi khác đã hoàn thành việc thực thi không? Đây là phần có liên quan của mã của tôi:
public static void main(String[] args) {
//some other initialization code
//Make array of Thread objects
Thread[] racecars = new Thread[numberOfRaceCars];
//Fill array with RaceCar objects
for(int i=0; i<numberOfRaceCars; i++) {
racecars[i] = new RaceCar(laps, args[i]);
}
//Call start() on each Thread
for(int i=0; i<numberOfRaceCars; i++) {
racecars[i].start();
try {
racecars[i].join(); //This is where I tried to using join()
//It just blocks all other threads until the current
//thread finishes.
} catch(InterruptedException e) {
e.printStackTrace();
}
}
//This is the line I want to execute after all other Threads have finished
System.out.println("It's Over!");
}
Cảm ơn các bạn trợ giúp!
Eric
Đẹp, điều đó đã làm việc rất đẹp! Cảm ơn! – ericso
Đây rõ ràng là con đường phù hợp để đi. Tôi không thể tin các câu trả lời khác ủng hộ việc sử dụng wait() và notify() và các rào cản đã được upvoted: chúng quá phức tạp cho tình huống này. –
@AdrianPronk: Đó là vẻ đẹp của các ý kiến khác nhau. – Thomas