1. 程式人生 > >使用Asynctask導致執行緒阻塞

使用Asynctask導致執行緒阻塞

先說一下我遇到的問題

我用Asynctask做了一個下載功能結果下載可以,但是其它頁面都訪問不了了都被阻塞了。下載完成後馬上就可以訪問了!

先解釋一下為什麼會阻塞

1.我們的專案Http請求裡面也是用的Asynctask,這樣問題就來了。Android4.0以後Asynctask就改成(先進先出)誰先來誰先執行並且只能一個執行緒執行

這樣就導致了我的所有Http請求都阻塞了。因為Asynctask執行exexute之後不會馬上執行doInBackground方法,而是會去找Asynctask裡面的執行緒池結果只有一個那就只有等待咯

解決辦法

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

這編文章不錯我的問題解決了

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