如何在Android中进行多线程计算

如何在Android中进行多线程计算,android,multithreading,Android,Multithreading,我想使用多线程进行两种不同的计算。我有一个AsyncTask,里面有函数“doInBackground”。在这个函数中,我想利用多个核进行更多的计算。我试图使用IntentService,但我不知道它是如何工作的。这是主要活动的代码: @Override public String doInBackground(Void... params) { long startTime = System.currentTimeMillis(); Intent multi_pi = new In

我想使用多线程进行两种不同的计算。我有一个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
   }
}

有其他解决方案吗?

首先,您不能
利用多个内核。只有系统决定是使用一个核心还是多个核心来解决特定任务

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

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


AsyncTask
IntentService
Service
这样的类都有特定的目标。如果只需要运行两个线程,则根本不需要使用
AsyncTask
IntentService

为什么需要IntentService?如果要执行多线程计算,只需同时运行几个AsyncTask。注意AsyncTask,因为已知它会导致内存泄漏。如果我要计算单个线程的执行时间,然后将时间添加到总时间变量中,该怎么办?@Northumber,那么问题是什么?我要测量单个计算的执行时间,直到他结束,然后将时间相加为变量“总时间”