0
我打电话给一个API来获取ID列表。该列表包含大约55.000个ID。然后,我希望启动线程并根据ID获取有关其对象的信息并将其存储在数据库中。我设法使用线程来做到这一点,但想知道如何使用线程池来优化它。我想要做的10个线程,将它们添加到一个线程池,等待它们完成,等待10秒(或我会得到429,太多的请求),然后再开始10个线程,直到所有完成。为了做到这一点,需要做些什么?在JAVA中反复使用线程池
此外,该列表的长度未知,因此它可能不是最后一个池中的10个项目,如果这有所不同。
这是我到目前为止工作的。 (睡眠不是真正的工作,一会儿429发生后反正)
JSONObject IDs = getIDs();
for (int i = 0; i <= IDs.length(); i++) {
try {
int ID = IDs.getJSONArray("app").getInt("appid");
// get info on object and store it in database
Thread t = new Thread(new MyRunnable(ID));
t.start();
// sleep or 429, too many requests
Thread.sleep(1000);
} catch (JSONException | InterruptedException e) {
e.printStackTrace();
}
}
了解适用于Java的基本推荐语法。不建议使用“IDs”等变量名称 –
@KavishMittal我知道,这只是一个例子。 – McSlush
你仍然应该发布适当和格式良好的问题。 –