如何在Android中进行多线程计算
我想使用多线程进行两种不同的计算。我有一个AsyncTask,里面有函数“doInBackground”。在这个函数中,我想利用多个核进行更多的计算。我试图使用IntentService,但我不知道它是如何工作的。这是主要活动的代码:如何在Android中进行多线程计算,android,multithreading,Android,Multithreading,我想使用多线程进行两种不同的计算。我有一个AsyncTask,里面有函数“doInBackground”。在这个函数中,我想利用多个核进行更多的计算。我试图使用IntentService,但我不知道它是如何工作的。这是主要活动的代码: @Override public String doInBackground(Void... params) { long startTime = System.currentTimeMillis(); Intent multi_pi = new In
@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,那么问题是什么?我要测量单个计算的执行时间,直到他结束,然后将时间相加为变量“总时间”