Java多執行緒使用場景
阿新 • • 發佈:2019-02-01
使用多執行緒就一定效率高嗎? 有時候使用多執行緒並不是為了提高效率,而是使得CPU能夠同時處理多個事件。
使用場景1
為什麼了不阻塞主執行緒,啟動其他執行緒來做耗時的事情。
比如app開發中耗時的操作都不在UI主執行緒中做。
使用場景2
實現響應更快的應用程式, 即主執行緒專門監聽使用者請求,子執行緒用來處理使用者請求。以獲得大的吞吐量。
感覺這種情況下,多執行緒的效率未必高。 這種情況下的多執行緒是為了不必等待, 可以並行處理多條資料。
比如JavaWeb的就是主執行緒專門監聽使用者的HTTP請求,然後啟動子執行緒去處理使用者的HTTP請求。
使用場景3
某種優先順序雖然很低的服務,但是卻要不定時去做。
比如Jvm的垃圾回收。
使用場景4
某種任務,雖然耗時,但是不耗CPU的操作時,開啟多個執行緒,效率會有顯著提高。
比如讀取檔案,然後處理。 磁碟IO是個很耗費時間,但是不耗CPU計算的工作。 所以可以一個執行緒讀取資料,一個執行緒處理資料。肯定比
一個執行緒讀取資料,然後處理效率高。 因為兩個執行緒的時候充分利用了CPU等待磁碟IO的空閒時間。
曾幾何時想過使用多執行緒讀取磁碟資料, 但是讀取磁碟資料的效能瓶頸是IO,而不是CPU。 使用多執行緒的目的是為了不讓CPU閒下來,明顯不適合用於讀取磁碟資料。