我想使用多线程进行两种不同的计算。我有一个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
}
}
还有其他解决办法吗?
答案 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();
这就是全部。
AsyncTask
,IntentService
和Service
等类具有特定的目标。如果只需要运行两个线程,则根本不需要使用AsyncTask
或IntentService
。