Thread 就是線程。一個小小的對象而已。線程上可以執(zhí)行一個函數(shù)。主要用法可以用來并發(fā)執(zhí)行一些動作,也能在不阻塞UI的情況下完成一些持續(xù)計算。但是,很多人覺得每次調(diào)用一個函數(shù)都要new一個線程是很麻煩的。所以干脆提前New好了很多線程。裝在一個list中。你要調(diào)用函數(shù)的時候就從list中提取出一個空閑的線程。函數(shù)執(zhí)行完畢后,就把這個空閑的線程又放到這個list中。減少了new thread的時間。所以線程池,說白了就是List。提供一個方法,讓你能方便的把自己的函數(shù)不管三七二十一都放這個List中去,然后依次執(zhí)行。
所以,如果你常常使用系統(tǒng)的線程池,你甚至不需要知道Thread是什么東西。你只要知道,這是一個魔術(shù)口袋,你把你的函數(shù)塞進去,過一陣子就執(zhí)行完了。根本不要你來操心。
微軟真是培養(yǎng)懶人啊。。
后來大家發(fā)現(xiàn),線程池也不方便,因為進了這個魔術(shù)口袋的函數(shù),你不能突然中斷它的執(zhí)行。在多核時代,它的效率也不盡如人意。所以微軟又把原來的線程池改造了一下,現(xiàn)在都不叫threadPool了。直接叫Task。你不必管我是怎么實現(xiàn)的,你只要把函數(shù)塞我肚肚里,我一定會執(zhí)行。而且你能用我提供的API。來控制整個過程。
所以Task。就是一個方便使用的線程池。至于把函數(shù)塞進去??隙ㄊ窃谄渌€程中執(zhí)行的,只是這不是我們需要操心的了。
我很喜歡微軟的新特性,每次都能給我?guī)硇碌捏@喜。讓我又懶了一些。