一般來說因為 Thread 是非同步的執行,因此當新的 Thread 被產生出來之後,跟原本的 Thread 的執行順序就不保證了
但有時我們還是會想要等某個 Thread 執行完畢以後,現在的 Thread 再繼續執行
這時就可以利用 join() 函式去等待。
範例程式碼如下:
int times = 100; Thread[] ts = new Thread[times]; for(int i=0 ; i<times ; i++) { Thread t = new Thread(new Test()); ts[i] = t; // Add to array t.start(); } for(int i=0 ; i<times ; i++) { try { ts[i].join(); } catch (Exception e) { e.printStackTrace(); } } System.out.println("done.");
這樣子的寫法,done 那行就會在前面 100 個 Thread 全都結束後才會印出來。
參考資料:
1、How to wait for a set of threads to complete?
沒有留言:
張貼留言