【发布时间】:2023-03-26 22:55:01
【问题描述】:
在AsyncTask(在Android SDK中)here的内部实现中,sDefaultExecutor用volatile关键字声明,SerialExecutor中的execute()方法也用synchronized关键字声明。
- 现在因为 AsyncTask 只能从 UI 线程执行,而且如果
我们执行
AsyncTask的实例,我们不能执行相同的 除非前一个实例已完成执行,否则再次实例化。 那么这里怎么会出现多线程的情况呢? - 为什么
SerialExecutor有ArrayDeque?因为有时我们 只能有一项任务。如果我们创建一个AsyncTask的新实例, 那么我们不会再得到一个ArrayDeque的新实例吗? 要处理一个任务? -
ThreadPoolExecutor也是如此。为什么是线程池 当AsyncTask的特定实例需要时,我们可以有 只有一个任务?一个线程就足够了。
【问题讨论】:
标签: java android multithreading android-asynctask