У меня есть специальный сервисный модуль, в котором я передаю тело JSON, содержащее массив идентификаторов. Я должен повторить эти идентификаторы и сделать отдельный вызов веб-службы с каждым идентификатором, чтобы получить тело ответа, а затем объединить эти ответы в пользовательскую структуру JSON. У меня есть все работающие, но я бы хотел реализовать потоки (или некоторые их способы), чтобы сделать HTTP-вызовы асинхронно, а не последовательно. Как бы я реализую резьб в следующем коде:Java - Threading HttpUrlConnection вызывает
ids = (JSONArray) jsonIn.get("IDs");
MyClass myClass = null;
List<MyClass> myClassList = new ArrayList<MyClass>();
for (int i = 0; i < ids.size(); i++) {
JSONObject p = (JSONObject)ids.get(i);
id = p.get("ID").toString();
//The HttpUrlConnection call is made in the getResponse() method
Gson gson = new Gson();
MyClassResponse result = gson.fromJson(getResponse(),
MyClassResponse.class);
for (int x = 0; x < result.ids[0].id.length; x++) {
myClass = new MyClass();
myClass.setStringOne(result.ids[0].fieldOne);
myClass.setStringTwo(result.ids[0].fieldTwo);
myClassList.add(x, myClass);
}
}
Gson gsonOut = new Gson();
String jsonString = gsonOut.toJson(myClassList);
JsonArray jsonArray = new JsonParser().parse(jsonString).getAsJsonArray();
JSONObject response = new JSONObject();
response.put("CustomStructure", jsonArray);
//pass back custom JSON body
Я попытался я использовать Runnable, но моя путаница заключается в том, где ставить/начала резьбы (внутри или вне цикла) или я не уверен, если есть другой способ для использования это более подходит для асинхронных HTTP-вызовов. – bgeveritt