1. 程式人生 > >Java多執行緒使用場景

Java多執行緒使用場景

使用多執行緒就一定效率高嗎? 有時候使用多執行緒並不是為了提高效率,而是使得CPU能夠同時處理多個事件。

使用場景1

為什麼了不阻塞主執行緒,啟動其他執行緒來做耗時的事情。

比如app開發中耗時的操作都不在UI主執行緒中做。

使用場景2

實現響應更快的應用程式, 即主執行緒專門監聽使用者請求,子執行緒用來處理使用者請求。以獲得大的吞吐量。
感覺這種情況下,多執行緒的效率未必高。 這種情況下的多執行緒是為了不必等待, 可以並行處理多條資料。

比如JavaWeb的就是主執行緒專門監聽使用者的HTTP請求,然後啟動子執行緒去處理使用者的HTTP請求。

使用場景3

某種優先順序雖然很低的服務,但是卻要不定時去做。

比如Jvm的垃圾回收。

使用場景4

某種任務,雖然耗時,但是不耗CPU的操作時,開啟多個執行緒,效率會有顯著提高。
比如讀取檔案,然後處理。 磁碟IO是個很耗費時間,但是不耗CPU計算的工作。 所以可以一個執行緒讀取資料,一個執行緒處理資料。肯定比
一個執行緒讀取資料,然後處理效率高。 因為兩個執行緒的時候充分利用了CPU等待磁碟IO的空閒時間。

曾幾何時想過使用多執行緒讀取磁碟資料, 但是讀取磁碟資料的效能瓶頸是IO,而不是CPU。 使用多執行緒的目的是為了不讓CPU閒下來,明顯不適合用於讀取磁碟資料。