0
我使用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 2013-02-20 20:51:37
您正在覆蓋'AsyncHttpClient'的默認'ThreadPoolExecuter',以便在發出請求時使用它 – iTech 2013-02-20 20:52:41
好吧我認爲我現在明白了,但由於AsyncHttpClient.get()是異步調用,所以這樣不好嗎? – heero 2013-02-20 20:55:02