以下方法會有什麼區別?新線程和任務啓動新區別?
Task.Factory.StartNew(() => CustomConnection());
new Thread(CustomConnection).Start();
兩者都將創建執行作業的新線程。在什麼意義上線程與任務不同?
性能明智哪個更好的選擇?
以下方法會有什麼區別?新線程和任務啓動新區別?
Task.Factory.StartNew(() => CustomConnection());
new Thread(CustomConnection).Start();
兩者都將創建執行作業的新線程。在什麼意義上線程與任務不同?
性能明智哪個更好的選擇?
關鍵區別在於Task方法將利用線程池。
這很重要,因爲這意味着您只會創建儘可能多的線程。在可能的情況下,現有的線程將被重新使用,從而不必創建新線程即可獲得性能優勢。
如果您正在創建大量線程,對於相對較短的運行操作,上述好處變得更加重要。但是,如果該操作是一個或少數幾個長時間運行的操作,那麼它的好處就更少了。
所以,它最好使用Task方法。對??謝謝 – Olivarsham
@Olivarsham:並非總是如此。參見:http://stackoverflow.com/questions/12760956/are-there-any-scenario-where-tasks-should-not-be-used/12761012 – Tudor
可能的重複http://stackoverflow.com/questions/4130194/what-is-the-difference-between-task-and-thread – margabit
但我問的表現明智哪個會是不錯的選擇.. – Olivarsham