同时调用函数

时间:2013-10-08 20:43:59

标签: java android multithreading

我有两个语句从我的Android应用程序中的jni库中调用C ++文件中的两个方法。 例如 -

x1 = function1();
x2 = function2();

这些方法中的每一种都需要大约8秒的时间来返回一个值(由于某些数据处理)。我的目标是让它们同时执行而不是一个接一个地执行(这会导致16秒的延迟)。

我尝试制作两个Runnables,但后来我意识到它们会被添加到同一个队列中。

我不想扩展Thread类,因为我不想让这些函数调用循环(我只需要在需要时调用它们)

有没有一个解决方案,我可以同时调用它们一次,让它们几乎同时返回它们的值?

2 个答案:

答案 0 :(得分:1)

您应该查看Android的AsyncTask类。它提供了一种启动后台运行的线程的方法,然后在工作完成时提供回调。在这种情况下,两个线程都将在后台运行,因此您必须记住,除非您告诉主线程等待,否则代码的其余部分将一直运行直到工作完成。

答案 1 :(得分:0)

我们可以使用线程池,不需要扩展Thread

ExecutorService pool = Executors.newFixedThreadPool(2);
Future future1 = pool.submit(new Callable() { public Object call() { return function1(); } } );
Future future2 = pool.submit(new Callable() { public Object call() { return function2(); } } );
x1 = future1.get();
x2 = future2.get();