我有一个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