python線程池并發(fā)爬蟲 為什么了要使用線程池,什么情況下要使用線程池?
為什么了要使用線程池,什么情況下要使用線程池? java.util.concurrent文件. 遺囑執(zhí)行人提供java.util.concurrent文件該計劃的實施。Executor接口用于創(chuàng)建
為什么了要使用線程池,什么情況下要使用線程池?
java.util.concurrent文件. 遺囑執(zhí)行人提供java.util.concurrent文件該計劃的實施。Executor接口用于創(chuàng)建線程池。多線程技術(shù)主要用于解決處理器單元中的多線程問題。它可以顯著減少處理器單元的空閑時間,提高處理器單元的吞吐量。
假設(shè)服務(wù)器完成任務(wù)所需的時間是:T1創(chuàng)建線程,T2在線程中執(zhí)行任務(wù),T3銷毀線程。
如果T1和T3比T2大得多,則可以使用線程池來提高服務(wù)器性能。
線程池的功能是限制系統(tǒng)中執(zhí)行線程的數(shù)量。
根據(jù)系統(tǒng)環(huán)境,線程數(shù)可自動或手動設(shè)置,達到最佳效果;系統(tǒng)資源浪費少,系統(tǒng)擁塞多,效率低。線程池用于控制線程數(shù),其他線程排隊。任務(wù)執(zhí)行后,將執(zhí)行隊列中的第一個任務(wù)。如果隊列中沒有等待進程,則線程池的資源正在等待。當(dāng)一個新任務(wù)需要運行時,如果線程池中有等待的工作線程,則可以開始運行;否則,將進入等待隊列。
1. 減少創(chuàng)建和銷毀線程的數(shù)量,每個工作線程都可以重用,并且可以執(zhí)行多個任務(wù)。
2. 您可以根據(jù)系統(tǒng)的承載能力來調(diào)整線程池中的工作線線程數(shù),以防止服務(wù)器因為消耗太多內(nèi)存而疲憊不堪(每個線程大約需要1MB內(nèi)存,打開的線程越多,消耗的內(nèi)存就越多,最后服務(wù)器崩潰)。
Java線程池的頂層接口是executor,但嚴格來說,executor不是線程池,而是執(zhí)行線程的工具。真正的線程池接口是executorservice。