Java 同时函数调用 我有两个语句,在我的Android应用程序中JNI库中调用C++文件中的两种方法。 例如— x1 = function1(); x2 = function2();

Java 同时函数调用 我有两个语句,在我的Android应用程序中JNI库中调用C++文件中的两种方法。 例如— x1 = function1(); x2 = function2();,java,android,multithreading,Java,Android,Multithreading,这些方法中的每一种都需要大约8秒来返回一个值(由于某些数据处理)。我的目标是同时执行这些操作,而不是一个接一个地执行(这会导致16秒的延迟) 我试着制作两个Runnable,但后来我意识到它们被添加到了同一个队列中 我不想扩展Thread类,因为我不想让这些函数调用循环(我只需要在需要时调用它们) 有没有一种解决方案,我可以同时调用它们一次,让它们同时返回它们的值?您应该研究一下Android的AsyncTask类。它提供了一种方法来启动后台运行的线程,然后在工作完成时提供回调。在这种情况下,两

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

我试着制作两个Runnable,但后来我意识到它们被添加到了同一个队列中

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


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

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

我们可以使用线程池来完成此操作,无需扩展
线程:

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();

为什么不能在线程构造函数中使用Runnable呢?