2013-10-08 48 views
2

我有兩個語句在我的Android應用程序的jni庫中調用C++文件中的兩個方法。 例如 -同時函數調用

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

每種方法需要大約8秒返回一個值(由於一些數據處理)。我的目標是讓它們同時執行而不是一個接一個地執行(這會造成16秒的延遲)。

我試着做兩個Runnables,但後來我意識到他們被添加到同一個隊列中。

我不想擴展Thread類,因爲我不希望這些函數調用進行循環(我需要他們被稱爲只有當我想)

有沒有一個解決方案,我可以打電話他們同時只是一次,讓他們幾乎同時返回他們的價值?

+0

爲什麼你就不能使用你的Runnable在Thread構造? –

回答

1

你應該看看Android的AsyncTask類。它提供了一種方法來啓動在後臺運行的線程,然後在工作完成時提供回調。在這種情況下,兩個線程都將在後臺運行,所以您必須記住,除非您告訴主線程等待,否則其餘代碼將繼續運行直至工作完成。

+0

謝謝,這有幫助! – BugInTheCode

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