使用多線程就必定效率高嗎? 有時候使用多線程並非爲了提升效率,而是使得CPU可以同時處理多個事件。多線程
爲何了不阻塞主線程,啓動其餘線程來作耗時的事情。app
好比app開發中耗時的操做都不在UI主線程中作。性能
實現響應更快的應用程序, 即主線程專門監聽用戶請求,子線程用來處理用戶請求。以得到大的吞吐量。
感受這種狀況下,多線程的效率未必高。 這種狀況下的多線程是爲了避免必等待, 能夠並行處理多條數據。線程
好比JavaWeb的就是主線程專門監聽用戶的HTTP請求,而後啓動子線程去處理用戶的HTTP請求。事件
某種優先級雖然很低的服務,可是卻要不定時去作。開發
好比Jvm的垃圾回收。效率
某種任務,雖然耗時,可是不耗CPU的操做時,開啓多個線程,效率會有顯著提升。
好比讀取文件,而後處理。 磁盤IO是個很耗費時間,可是不耗CPU計算的工做。 因此能夠一個線程讀取數據,一個線程處理數據。確定比
一個線程讀取數據,而後處理效率高。 由於兩個線程的時候充分利用了CPU等待磁盤IO的空閒時間。垃圾回收
曾幾什麼時候想過使用多線程讀取磁盤數據, 可是讀取磁盤數據的性能瓶頸是IO,而不是CPU。 使用多線程的目的是爲了避免讓CPU閒下來,明顯不適合用於讀取磁盤數據。請求