在单独的线程中运行计算

时间:2011-09-08 19:03:22

标签: android multithreading

我正在尝试在新线程中运行计算,我只是不确定正确的方法。我不确定我是否应该使用:

private Thread calcThread = new Thread(){
    @Override
    public void run(){
        calc();
    }
};

然后在我想进行计算时使用calcThread.run()或者我应该这样做:

new Thread(new Runnable() {
    public void run() {
      calc();
    }
  }).start();

每当我想运行我的计算时。

哪个更好,哪一个?

感谢。

3 个答案:

答案 0 :(得分:2)

做这样的事情

public class cal extends Thread {
    public void run(){
        calc();
    }
}

只需像这样创建这个类的对象

cal c = new cal();
c.start();

您可以在代码中的任何位置开始执行计算的线程。

答案 1 :(得分:1)

Android中后台线程上最简单的方法是AsyncTask。

http://developer.android.com/reference/android/os/AsyncTask.html

AsyncTask将处理在后台线程上运行您的计算,然后在UI线程上返回您的结果。

   private class DoCalculationTask extends AsyncTask<Void, Void, Void> {

      @Override
      protected Void doInBackground(Void... arg0) {
        calc();
        return null;
      }

      protected void onPostExecute(Void result) {
        // Post results to main thread
      }
    }

答案 2 :(得分:0)

几乎一样。第二个是稍微清洁,恕我直言,因为实现接口被广泛认为是比子类化框架类更好的做法。如果在某个遥远的未来Thread.run()不再是线程入口点怎么办?不太可能,我知道......