Я использую AsyncHttpClient
, чтобы получить некоторые JSON. Мой метод будет разбираться через JSON и будет запускать другой запрос на получение, поэтому я фактически не знаю, сколько потоков работает. После некоторого поиска, я думаю, я мог бы использовать ThreadPoolExecutor
, чтобы узнать, когда все мои потоки закончены, поэтому я могу писать в базу данных. Как исполнитель узнает, что я отправил задание, если я использую AsyncHttpClient.get()
?AsyncHttpClient с ThreadPoolExecutor, чтобы узнать, когда все задачи завершены?
AsyncHttpClient client = new AsyncHttpClient();
int limit = 20;
BlockingQueue<Runnable> q = new ArrayBlockingQueue<Runnable>(limit);
ThreadPoolExecutor executor =
new ThreadPoolExecutor(limit, limit, 20, TimeUnit.SECONDS, q);
client.setThreadPool(executor);
parseSilo(url, context); // this fires client.get() ... as it encounters urls in JSON feed
executor.shutdown();
while (!executor.awaitTermination(10, TimeUnit.SECONDS)) {
Log.e(TAG, executor.getTaskCount() + " tasks left");
}
Правильно, возможно, мой вопрос не был ясен. Как исполнитель узнает, что я отправил задание, если я использую AsyncHttpClient.get()? – heero
Вы переопределяете «ThreadPoolExecuter» по умолчанию «AsyncHttpClient», поэтому он будет использовать его при выдаче запроса. – iTech
. Хорошо. Думаю, теперь я понимаю, но это плохо, поскольку AsyncHttpClient.get() является асинхронным вызовом? – heero