I developed an application client side. I make rest call. When I do too many calls, my application crash. I understand that it's a problem of concurrency but I do not know how to fix the issue.
Here is the log error:
08-25 15:18:14.060: E/AndroidRuntime(3207): FATAL EXCEPTION: AsyncTask #1
08-25 15:18:14.060: E/AndroidRuntime(3207): java.lang.RuntimeException: An error occured while executing doInBackground()
08-25 15:18:14.060: E/AndroidRuntime(3207): at android.os.AsyncTask$3.done(AsyncTask.java:278)
08-25 15:18:14.060: E/AndroidRuntime(3207): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
08-25 15:18:14.060: E/AndroidRuntime(3207): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
08-25 15:18:14.060: E/AndroidRuntime(3207): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
08-25 15:18:14.060: E/AndroidRuntime(3207): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
08-25 15:18:14.060: E/AndroidRuntime(3207): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
08-25 15:18:14.060: E/AndroidRuntime(3207): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
08-25 15:18:14.060: E/AndroidRuntime(3207): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
08-25 15:18:14.060: E/AndroidRuntime(3207): at java.lang.Thread.run(Thread.java:856)
08-25 15:18:14.060: E/AndroidRuntime(3207): Caused by: java.util.ConcurrentModificationException
08-25 15:18:14.060: E/AndroidRuntime(3207): at java.util.ArrayList$ArrayListIterator.next(ArrayList.java:569)
08-25 15:18:14.060: E/AndroidRuntime(3207): at org.springframework.web.client.RestTemplate$AcceptHeaderRequestCallback.doWithRequest(RestTemplate.java:541)
08-25 15:18:14.060: E/AndroidRuntime(3207): at org.springframework.web.client.RestTemplate$HttpEntityRequestCallback.doWithRequest(RestTemplate.java:593)
08-25 15:18:14.060: E/AndroidRuntime(3207): at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:474)
08-25 15:18:14.060: E/AndroidRuntime(3207): at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:453)
08-25 15:18:14.060: E/AndroidRuntime(3207): at org.springframework.web.client.RestTemplate.postForEntity(RestTemplate.java:358)
08-25 15:18:14.060: E/AndroidRuntime(3207): at com.bpc.inno.nao.controller.services.NaoServicesClient$ServiceRequest.doInBackground(NaoServicesClient.java:138)
08-25 15:18:14.060: E/AndroidRuntime(3207): at android.os.AsyncTask$2.call(AsyncTask.java:264)
08-25 15:18:14.060: E/AndroidRuntime(3207): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
08-25 15:18:14.060: E/AndroidRuntime(3207): ... 5 more
The error is there
@SuppressWarnings("unchecked")
@Override
protected K doInBackground(T... params) {
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setAccept(Arrays.asList(
new MediaType("application","xml"),
new MediaType("text", "xml")));
HttpEntity<T> requestEntity = new HttpEntity<T>(
params[0], requestHeaders);
try {
ResponseEntity<K> response = mRestTemplate.postForEntity(
mUri, requestEntity, mResponseType);
return response.getBody();
} catch (ResourceAccessException ex) {
Throwable cause = ex.getCause();
if (cause != null && cause instanceof ConnectTimeoutException) {
Log.e(TAG, "Request Timeout");
}
mError = true;
return null;
}
}
I do not know how to fix it. Do you?