Thread系列——ThreadPool
1.線程池,顧名思義,就是裝著若干個線程的池子。
2.出現(xiàn)理由
??? 可以更為有效的使用線程。
??? 如何理解這個“有效”?
???? (1)我們知道線程在使用之前一般是處于休眠狀態(tài)的,這樣浪費了大量資源創(chuàng)建它,但是卻沒有使用它,真的是浪費資源。
?????(2)使用線程時,線程之間的切換也會浪費大量資源。
???而線程池,就是為了避免上述兩個問題,從而更為有效的利用資源來完成線程之間的調(diào)度進而完成工作。
3.線程池工作原理
????
?? 如上圖所示,線程池中維護著若干空閑進程,空閑線程的個數(shù)默認為每個處理器25個,最小值是系統(tǒng)的處理器的個數(shù)。
?? 當有任務(wù)時,不需要程序員另外啟動線程,而是通過ThreadPool.QueueUserWorkItem()方法將任務(wù)放到線程池中,線程池會將任務(wù)交給合適的線程去執(zhí)行。其中,該方法有兩個參數(shù)WaitCallBack和Object,分別是線程啟動時調(diào)用的方法和在方法中要用到的參數(shù)。
?? 當線程池中的空閑線程都忙著時,線程池要么創(chuàng)建新的空閑線程,要么等待其他線程結(jié)束。
?
? 這樣設(shè)計,可以使任務(wù)循環(huán)利用線程池中已有的線程,而減少了線程創(chuàng)建和銷毀的資源的占用,大大提高了效率。
?
轉(zhuǎn)載于:https://www.cnblogs.com/ATually/archive/2010/10/21/1857504.html
總結(jié)
以上是生活随笔為你收集整理的Thread系列——ThreadPool的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Log4j 入门总结
- 下一篇: NET Framework 安装时出现错