asyncTask核心是构建了一个线程池(基于android API 28),核心线程最小是2,最大是4或者CPU数量减1中更小的值。任务队列是一个容量为128的LinkedBlockingQueue,并且没有设置超过队列数时的应对措施,线程池的RejectedExecutionHandler(放入队列的任务大于任务数时的回调)是默认的defaultHandler,AbortPolicy。此时如果线程池达到最大线程数并且任务队列已满调用astncTask的execute会直接报任务队列已满的异常,由于没有捕捉到这个异常查了很久。

     另外如果之前的任务还没有执行完,并且任务队列没有满,只会开启核心线程池。此时如果之前的任务还在执行,可能会等待很长时间才会执行。

Asynctask 未运行探究

参考资料:

https://blog.csdn.net/smileiam/article/details/89225102

https://www.jianshu.com/p/ade771d2c9c0

相关文章:

  • 2021-08-05
  • 2022-12-23
  • 2021-07-08
  • 2021-09-20
  • 2021-11-19
  • 2021-08-16
  • 2021-07-06
  • 2022-12-23
猜你喜欢
  • 2021-10-29
  • 2021-12-25
  • 2021-08-01
  • 2022-12-23
  • 2021-08-20
相关资源
相似解决方案