我試着運行幾個請求來做不同的服務器和調試程序的行爲。首先,我創建並運行多個asynctasks這使得多個請求Spring RestTemplate正確的多線程使用
public class MyTask extends AsyncTask<Object, Void, Void> {
int runnnigDownloadThreadsCount = 0;
@Override
protected Void doInBackground(Object... params) {
runnnigDownloadThreadsCount++;
try {
// TODO здесь необходимо исправить serverName на оригинальный урл с указанием параметра сервера
List<TravelTicket> ticketsList = TravelTicket.downloadTickets((TravelTicket.RequestServerParams) params[0], (String) params[1]);
if (ticketsList != null)
synchronized (TravelBookingApplication.travelTicketsList) {
TravelBookingApplication.travelTicketsList.addAll(ticketsList);
}
return null;
} catch (Exception e) {
throw new Error(e);
}
}
@Override
protected void onPostExecute(Void result) {
runnnigDownloadThreadsCount--;
if (runnnigDownloadThreadsCount == 0) {
Intent i = new Intent(getActivity().getApplicationContext(), HotelsAndTicketsResponseListActivity.class);
i.putExtra("requestType", "tickets");
getActivity().startActivity(i);
if (dialog != null)
dialog.dismiss();
}
}
}
String[] urls = new String[]{
"http://dl.dropbox.com/u/34053723/provider1.json"
,
"http://dl.dropbox.com/u/34053723/provider2.json",
"http://dl.dropbox.com/u/34053723/provider3.json",
"http://dl.dropbox.com/u/34053723/provider4.json"
};
for (final String serverName : urls) {
// TODO ЗАМЕНИТЬ!!!
// for (final String serverName : params.serverNames) {
new MyTask().execute(params, serverName);
}
下一個函數TravelTicket.downloadTickets(...)我加載數據與RestTemplate
public static ArrayList<TravelTicket> downloadTickets(RequestServerParams requestServerParams, String serverName) throws Exception {
// Запрос к серверу с указанием конретного провайдера и идентификторов запроса
// Заголовки
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setUserAgent(TravelBookingApplication.USER_AGENT);
HttpEntity requestEntity = new HttpEntity(requestHeaders);
RestTemplate restTemplate = new RestTemplate();
每個線程與最後一行HttpEntity requestEntity = new HttpEntity(requestHeaders);
方法但在第一次運行後,調試器凍結。它看起來像停在斷點上,但沒有人。
好吧,我理解你。我認爲這個問題非常具體。也許它與我的環境或其他方面有關。 – user826776 2012-07-06 08:59:33
你有沒有參考你的陳述? – 2014-01-23 14:30:12
@ChristopherRoscoe剛剛添加了一些支持性參考文獻,希望比我更好,我只是希望某些事情是真實的。 – 2014-01-24 10:42:54