我在AsyncTask类中运行了三个任务。我想并行运行这些任务,而不使用三个AsyncTask类。这可能吗?如果是的话,怎么办呢?您可以在下面找到我的AsyncTask类及其doInBackground方法的代码片段。
private class AsyncBenchmarking extends AsyncTask<Void, Void, Integer> {
@Override
protected void onPreExecute() {
lockScreenOrientation();
animateScreen();
super.onPreExecute();
}
@Override
protected Integer doInBackground(Void... params) {
firstTaskPerformance = objPrimeNumber.generatePrimeNumbers();
secondTaskPerformance = objLinpack.linpackBenchmark();
thirdTaskPerformance = objSuperPi.calculatePi(100000);
return;
}
}
答案 0 :(得分:3)
api说:
首次引入时,AsyncTasks在单个后台线程上串行执行。从DONUT开始,这被改为一个线程池,允许多个任务并行运行。从HONEYCOMB开始,任务在单个线程上执行,以避免由并行执行引起的常见应用程序错误。
因此,对于并行执行:
[{"code":"123"},{"identification":"Some item"},{"price":"$20"}]
希望它有所帮助!
答案 1 :(得分:2)
您可以改为使用Thread
。
new Thread((new Runnable() {
@Override
public void run() {
//somecode 1
}
}).start();
new Thread(((new Runnable() {
@Override
public void run() {
//somecode 2
}
}).start();
new Thread(((new Runnable() {
@Override
public void run() {
//somecode 3
}
}).start();
答案 2 :(得分:0)
不应直接操作线程。您应该使用ExecutorService类,如下所述:https://developer.android.com/reference/java/util/concurrent/ExecutorService.html
如果要并行执行三个任务,请将poolSize设置为3
没有更多,没有更少