我有两个语句从我的Android应用程序中的jni库中调用C ++文件中的两个方法。 例如 -
x1 = function1();
x2 = function2();
这些方法中的每一种都需要大约8秒的时间来返回一个值(由于某些数据处理)。我的目标是让它们同时执行而不是一个接一个地执行(这会导致16秒的延迟)。
我尝试制作两个Runnables,但后来我意识到它们会被添加到同一个队列中。
我不想扩展Thread类,因为我不想让这些函数调用循环(我只需要在需要时调用它们)
有没有一个解决方案,我可以同时调用它们一次,让它们几乎同时返回它们的值?
答案 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();