如何进行多线程计算Android

时间:2015-07-11 13:46:06

标签: android multithreading

我想使用多线程进行两种不同的计算。我有一个AsyncTask,里面有函数" doInBackground"。在这个函数中,我想进行更多计算,利用多个核心。我试图使用IntentService,但我不知道它是如何工作的。这是主要活动的代码:

@Override
public String doInBackground(Void... params) {
   long startTime = System.currentTimeMillis();
   Intent multi_pi = new Intent(
                         getApplicationContext(),
                         multi_pi.class
                    );
   startActivity(multi_pi);
   long endTime = System.currentTimeMillis();
   long total_time = endTime - startTime;
   String time = Long.toString(total_time);
   return time;
}

这是第一次计算的代码:

public class multi_pi extends IntentService {
   public multi_pi(String pi_1) {
      super(pi_1);
   }

   @Override
   protected void onHandleIntent(Intent pi_1) {
    //first calculation
   }
}

还有其他解决办法吗?

1 个答案:

答案 0 :(得分:0)

首先,你可以exploit multiple cores。只有系统决定是使用一个或多个核心来解决特定的任务或任务。

但是你可以给系统提供一个温和的提示,你需要同时执行几个任务:只创建两个或多个线程。

new Thread(new Runnable() {
    @Override public void run() {
        //calculations #1
    }
}).start();
new Thread(new Runnable() {
    @Override public void run() {
        //calculations #2
    }
}).start();

这就是全部。

AsyncTaskIntentServiceService等类具有特定的目标。如果只需要运行两个线程,则根本不需要使用AsyncTaskIntentService