本人对于线程池的理解和实践
现在需要自己回顾和拓展研究一下关于线程池的使用
我没有做过实验,但是我看到了项目中使用的方法。
// 限制性线程池,每次只能并发一定数量的线程
private static ExecutorService REQUEST_ASYNC_TASK_EXECUTOR;
static {
//默认最大并发5个线程
REQUEST_ASYNC_TASK_EXECUTOR = Executors.newFixedThreadPool(5);
}
然后使用该变量
new AsyncTask<Object, Object, Object>() {
@Override
protected Object doInBackground(Object... objects) {
Object result = null;
try {
String resp = HttpManager.openUrl(url, httpMethod, params, file);
result = resp;
} catch (BaseException e) {
result = e;
}
return result;
}
@Override
protected void onPostExecute(Object obj) {
if(obj.getClass().equals(BaseException.class)){
listener.onError((BaseException)obj);
} else {
listener.onComplete((String)obj);
}
}
}.executeOnExecutor(REQUEST_ASYNC_TASK_EXECUTOR);
这个过程中,
newFixedThreadPool代表了线程数量固定的线程池,当线程处于空闲状态时,它们不会被回收,除非线程池关闭了
这就是线程池使用的例子