使用Asynctask导致线程阻塞

先说一下我遇到的问题

我用Asynctask做了一个下载功能结果下载可以,但是其它页面都访问不了了都被阻塞了。下载完成后马上就可以访问了!

先解释一下为什么会阻塞

1.我们的项目Http请求里面也是用的Asynctask,这样问题就来了。Android4.0以后Asynctask就改成(先进先出)谁先来谁先执行并且只能一个线程执行

这样就导致了我的所有Http请求都阻塞了。因为Asynctask执行exexute之后不会马上执行doInBackground方法,而是会去找Asynctask里面的线程池结果只有一个那就只有等待咯

解决办法

BlockingQueue queue = new LinkedBlockingDeque();
ThreadPoolExecutor exec = new ThreadPoolExecutor(10, 10, 1, TimeUnit.DAYS, queue);
task.executeOnExecutor(exec, param);

这编文章不错我的问题解决了

http://blog.csdn.net/mddy2001/article/details/17127065

你可能感兴趣的:(Android,android,asynctask,android4.0,线程池,线程)