同时执行多个异步方法

时间:2018-05-15 14:19:41

标签: java android

我有3个异步方法:

1 - 更新数据
2 - 验证数据
3 - 输入

目前我的课程如下:

public void onCreate (Bundle savedInstanceState) {
        super.onCreate (savedInstanceState);
        setContentView (R.layout.activity_sync);
....

new Update (). execute ();
new Validate () .execute ();
new Enter (). execute ();
}

假设他们都必须同时执行,但他们希望得到前一个答案。

如何在不等待前一个完成的情况下让它们全部同时运行?

2 个答案:

答案 0 :(得分:0)

您应该在单独的线程中运行每个方法。 进行更新,验证,输入实现Runnable。 在run()方法中,调用execute()或将execute()重命名为run()。 然后

ExecutorService pool = Executors.newFixedThreadPool(poolSize);;
pool.execute(new Update());
pool.execute(new Validate());
pool.execute(new Enter());

答案 1 :(得分:0)

你可以使用 .executeOnExecutor()* 而不是.execute()来同时运行多个AsynchTask

*从API级别11或以后开始

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
     new Update().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
     new Validate().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
     new Enter().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
 else {
     new Update().execute();
     new Validate().execute();
     new Enter().execute();
}