我有一個Java線程像下面這樣:返回值從Java線程
public class MyThread extends Thread {
MyService service;
String id;
public MyThread(String id) {
this.id = node;
}
public void run() {
User user = service.getUser(id)
}
}
我有大約300 IDS,每幾秒鐘 - 我火了線程,使每個ID的呼叫。例如。現在
for(String id: ids) {
MyThread thread = new MyThread(id);
thread.start();
}
,我想從每個線程收集結果,並做了批量插入到數據庫中,而不是使300數據庫插入每2秒。
任何想法我可以做到這一點?
就我而言,某些服務調用可能永遠不會返回或返回時間太長。所以'invokeAll'和'awaitTermination(長時間超時)'看起來像是要走的路。因此我接受了這個答案。 希望我也能接受@ daveb的回答。 – Langali 2010-02-22 22:11:08
在這種情況下,您可以使用帶有超時參數的'invokeAll'的重載版本。我會更新我的答案以顯示如何。 – erickson 2010-02-22 22:15:27
謝謝。我不知何故忽略了它。 – Langali 2010-02-22 22:18:34