Я звоню на URL REST и пытаюсь измерить, сколько времени он принимает, чтобы получить ответ.
Я использую DefaultHttpClient
для этого, чтобы получить ответ от REST URL
.
В моей нижеперечисленной программе каждый поток будет работать в определенном диапазоне. Как и каждый поток будет работать между 1 - 100
, а второй поток будет работать между 101 - 200
и т.д.
SO в моем нижнем коде, он работает нормально. Но во второй раз он второй раз исключает эту строку httpclient.execute
как -
java.lang.IllegalStateException: Invalid use of BasicClientConnManager: connection still allocated.
Make sure to release the connection before allocating another one.
Есть ли что-то неправильное, что я здесь делаю?
Ниже мой код -
class Task implements Runnable {
private DefaultHttpClient httpclient = new DefaultHttpClient();
private HttpGet httpGet;
private HttpResponse response;
@Override
public void run() {
try {
httpGet = new HttpGet(
"http://localhost:8080/service/BEService/v1/get/USERID=10000/profile.ACCOUNT.SERVICE
httpGet.getRequestLine();
for (int userId = id; userId < id + noOfTasks; userId++) {
long start = System.nanoTime();
response = httpclient.execute(httpGet);
long end = System.nanoTime() - start;
}
} catch (Exception e) {
LOG.error("Threw a Exception in " + getClass().getSimpleName(), e);
}
}
}
Обновленный код: -
Если я делаю это что-то вроде этого -
class Task implements Runnable {
private DefaultHttpClient httpclient = new DefaultHttpClient();
private HttpGet httpGet;
private HttpResponse response;
@Override
public void run() {
try {
for (int userId = id; userId < id + noOfTasks; userId++) {
httpGet = new HttpGet("http://localhost:8080/service/BEService/v1/get/USERID=10000/profile.ACCOUNT.SERVICE");
httpGet.getRequestLine();
long start = System.nanoTime();
response = httpclient.execute(httpGet);
long end = System.nanoTime() - start;
HttpEntity entity = response.getEntity();
EntityUtils.consume(entity);
}
} catch (Exception e) {
LOG.error("Threw a Exception in " + getClass().getSimpleName(), e);
}
}
}
тогда это нормально или нет?