2011-09-08 85 views
1

我正试图在新线程中运行计算,我只是不确定正确的方式。我不知道我是否应该使用:在单独的线程中运行计算

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

,然后使用calcThread.run()时,我想做的计算,或者我应该做的:

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

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

哪一个更好?

谢谢。

回答

2

只是通过创建该类的对象这样

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

你就可以开始你的线程,无论你在代码中要进行计算,这样做

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

+0

我会继续,并选择这个作为我的答案。我不得不添加一个处理程序来更新我的用户界面。我还必须使用.run()而不是.start(),因为它会被多次调用。它现在似乎在工作。谢谢。 – Matt

+0

如果您选择这个作为您的答案,请确保将Rockers的答案标记为已接受的答案,这样他就可以获得赞誉。 – meddlingwithfire

0

差不多相同。第二个是稍微干净的,恕我直言,因为实现接口被认为是比子类框架类更好的做法。如果在遥远的将来Thread.run()不再是线程切入点呢?不太可能,我知道...

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 
     } 
    } 
相关问题