2014-12-05 49 views
2

上週我去參加面試,並在面試時的一個問我這個問題,有關線程run()方法的注意事項?

Q. What precaution do you take will writing a run() method? 

,我的回答是死鎖,活同步,饑荒和很少的開銷,但 他對我的回答並不滿意。他沒有告訴任何有當我們寫運行,你應該照顧()方法中的一些其他的事情...

I wrote run() like this during interview.. 

class DrawCircle implements Runnable { 

    public void run(){ 
     //some code here 
    } 

} 

任何機構可以告訴我什麼是在任何運行的線程寫的run()的正確方法?

+2

我會在離開前問採訪者的答案。這些都是蹩腳的問題,因爲它不是關於什麼是對或錯,而是關於在面試官心目中判斷什麼,並且你已經回答了這個問題。糟糕的面試練習。 – 2014-12-05 05:08:18

+0

我也做過同樣的事情。我問他回答這個問題,但他告訴你可以從谷歌獲得。 – Som 2014-12-05 05:09:40

+5

糟糕的迴應,一個好的面試官會一直向你解釋。 – 2014-12-05 05:10:37

回答

2

沒有什麼明顯的,但這些:

  1. 確保您run方法實際上在完成任務後返回,或者經過一些定義的閾值超時。如果run()卡在某處,那麼線程將永遠不會結束。如果由於某種原因,所有線程都卡住了,而且線程數量很多,那麼它可能會導致系統崩潰。

  2. 如果要擴展Thread類,請確保覆蓋正確的方法。爲了安全起見,在該方法的頂部添加@override是很好的。

  3. 如果您正在實施匿名線程,請確保將其分配給Thread實例。如果您的run方法進入不良狀態/無限循環。您可能能夠使用該實例中斷該線程。

+0

讓我清除上面的代碼... – Som 2014-12-05 05:01:56

+0

第1點 - 如果我希望該方法在應用程序的整個生命週期內運行,該怎麼辦?這不是一個不常見的要求。 – 2014-12-05 12:39:05