IDのリストを取得するためにAPIを呼び出しています。このリストには約55,000のIDが含まれています。スレッドを開始し、そのIDに基づいてオブジェクトに関する情報を取得し、データベースに格納したいと考えています。私はスレッドを使用してこれを行うことができましたが、スレッドプールを使用してこれを最適化する方法を知りたいと思います。Javaでスレッドプールを繰り返し使用
私が望むのは、10スレッドをスレッドプールに追加し、10秒間待ってから(または429リクエストが多すぎる)、すべてが完了するまで10回以上開始することです。これを行うために何をする必要がありますか?
また、リストの長さが不明なため、最後のプールでは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についても適切な基本的な推奨構文を学んでください。 "ID"のような変数名はお勧めできません –
@ KavishMittal私は知っています、これは一例です。 – McSlush
まだ正式な形式の質問を投稿するべきです。 –