CPU是以時間片的方式為程序分配CUP處理時間的,當一個程序以同步的方式去完成幾件事情時,此程序必須完成了第一件事情以後再做第二件事,如此按順序地向CPU請求完成要做的事情。在此單執行緒的工作模式下,如果把CUP看作是一共有100個時間片的話,CPU可能一直都只是花了其中的10個時間片來處理當前程序所要做的事情,只是用到了CPU的10%的時間片,而其他時間都白白浪費了,當然,實際上CPU的工作模式還是做完一件事以後再去做另一件事,只是CUP的處理速度非常快,很快就處理完成所請求的情事。
為了提高CPU的使用率,採用多執行緒的方式去同時完成幾件事情而互不干擾,如當前程序要完成三件事情1、2、3,那麼CPU會分別用10%的時間來同時處理這3件事情,從而讓CPU的使用率達到了30%,大大地提高了CPU的利用率。多執行緒的好處在處理一些特殊的場合其優勢尤其明顯。比如下載檔案,你要一邊下載一邊顯示進度一邊儲存,在這種情況下,如果沒有用多執行緒的話,沒有意外的話一般都會把主執行緒阻塞,比如進度條的進度根本沒有隨著已下載的量而變化,堪至是整個窗體都動不了,用多執行緒就可以很好地解決這個問題。
這裡有一個生活例項可能更好地去理解多執行緒:回去看你女朋友做飯,正常的話她都會把洗好的菜(肉)先放到鍋裡煮,然後一邊洗別的菜或處理別的事情,如:洗碗、收拾桌臺準備開飯,人還是一個人,但她同時做幾件事情,這樣就可以大大地提高效率。總的一句話就是:CPU還是要花同樣多的時間去完成所有的事情,但多執行緒可以讓CPU摻插地同時做多件事情,在視覺上讓使用者覺得計算機在同時幫他處理多件事情,更好地改善使用者體驗。
瞭解了多執行緒的好處以後,就要了解應該在什麼樣的情況下使用多執行緒技術。因為並不是說所有情況下用多執行緒都是好事,因為多執行緒的情況下,CPU還要花時間去維護,CPU處理各執行緒的請求時線上程間的切換也要花時間,所以一般情況下是可以不用多執行緒的,用了有時反而會得不償失。大多情況下,要用到多執行緒的主要是需要處理大量的IO操作時或處理的情況需要花大量的時間等等,比如:讀寫檔案、影片影象的採集、處理、顯示、儲存等。
CPU是以時間片的方式為程序分配CUP處理時間的,當一個程序以同步的方式去完成幾件事情時,此程序必須完成了第一件事情以後再做第二件事,如此按順序地向CPU請求完成要做的事情。在此單執行緒的工作模式下,如果把CUP看作是一共有100個時間片的話,CPU可能一直都只是花了其中的10個時間片來處理當前程序所要做的事情,只是用到了CPU的10%的時間片,而其他時間都白白浪費了,當然,實際上CPU的工作模式還是做完一件事以後再去做另一件事,只是CUP的處理速度非常快,很快就處理完成所請求的情事。
為了提高CPU的使用率,採用多執行緒的方式去同時完成幾件事情而互不干擾,如當前程序要完成三件事情1、2、3,那麼CPU會分別用10%的時間來同時處理這3件事情,從而讓CPU的使用率達到了30%,大大地提高了CPU的利用率。多執行緒的好處在處理一些特殊的場合其優勢尤其明顯。比如下載檔案,你要一邊下載一邊顯示進度一邊儲存,在這種情況下,如果沒有用多執行緒的話,沒有意外的話一般都會把主執行緒阻塞,比如進度條的進度根本沒有隨著已下載的量而變化,堪至是整個窗體都動不了,用多執行緒就可以很好地解決這個問題。
這裡有一個生活例項可能更好地去理解多執行緒:回去看你女朋友做飯,正常的話她都會把洗好的菜(肉)先放到鍋裡煮,然後一邊洗別的菜或處理別的事情,如:洗碗、收拾桌臺準備開飯,人還是一個人,但她同時做幾件事情,這樣就可以大大地提高效率。總的一句話就是:CPU還是要花同樣多的時間去完成所有的事情,但多執行緒可以讓CPU摻插地同時做多件事情,在視覺上讓使用者覺得計算機在同時幫他處理多件事情,更好地改善使用者體驗。
瞭解了多執行緒的好處以後,就要了解應該在什麼樣的情況下使用多執行緒技術。因為並不是說所有情況下用多執行緒都是好事,因為多執行緒的情況下,CPU還要花時間去維護,CPU處理各執行緒的請求時線上程間的切換也要花時間,所以一般情況下是可以不用多執行緒的,用了有時反而會得不償失。大多情況下,要用到多執行緒的主要是需要處理大量的IO操作時或處理的情況需要花大量的時間等等,比如:讀寫檔案、影片影象的採集、處理、顯示、儲存等。