2012-11-21 21 views
2

以下方法會有什麼區別?新線程和任務啓動新區別?

Task.Factory.StartNew(() => CustomConnection()); 


new Thread(CustomConnection).Start(); 

兩者都將創建執行作業的新線程。在什麼意義上線程與任務不同?
性能明智哪個更好的選擇?

+1

可能的重複http://stackoverflow.com/questions/4130194/what-is-the-difference-between-task-and-thread – margabit

+0

但我問的表現明智哪個會是不錯的選擇.. – Olivarsham

回答

4

關鍵區別在於Task方法將利用線程池。

這很重要,因爲這意味着您只會創建儘可能多的線程。在可能的情況下,現有的線程將被重新使用,從而不必創建新線程即可獲得性能優勢。

如果您正在創建大量線程,對於相對較短的運行操作,上述好處變得更加重要。但是,如果該操作是一個或少數幾個長時間運行的操作,那麼它的好處就更少了。

+0

所以,它最好使用Task方法。對??謝謝 – Olivarsham

+1

@Olivarsham:並非總是如此。參見:http://stackoverflow.com/questions/12760956/are-there-any-scenario-where-tasks-should-not-be-used/12761012 – Tudor

相關問題