2011-09-08 26 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 
     } 
    } 
相關問題