1. 程式人生 > >多執行緒之理解

多執行緒之理解

併發和並行: 1、並行就是兩個任務同時執行,就是甲任務進行的同時,乙任務也在進行。 2、併發是指兩個任務都請求執行,而處理器只能按受一個任務,就把這兩個任務安排輪流進行,由於時間間隔較短,使人感覺兩個任務都在執行。

計算機底層是有天然的非同步特性的。這個東西就是中斷。有些耗時的io操作,什麼時候處理完是可以不用管的。剩下的無關執行緒就可以自由自在的進行了。這樣可以提升使用者介面體驗。

最開始,執行緒只是用於分配單個處理器的處理時間的一種工具。但假如作業系統本身支援多個處理器,那麼每個執行緒都可分配給一個不同的處理器,真正進入“並行運算”狀態。
	所以說,如果計算機是單核的,那麼所謂的多執行緒其實只是併發的,並不是並行的,並不能提高系統性能,只能提高使用者介面的體驗。如果計算機是多核的,那麼同一時刻就會執行多於一條執行緒,真正進入並行狀態,提高資料的處理速度。

使用多執行緒的目的(單核計算機只有第一點):
	1.減少使用者介面等待時間,提升使用者介面的體驗(提高業務效率)。
	2.提高資料的處理速度。

缺點:
	如果有大量的執行緒,會影響效能,因為作業系統需要在它們之間切換。
	更多的執行緒需要更多的記憶體空間。
	執行緒可能會給程式帶來更多“bug”,因此要小心使用。
	通常塊模型資料是在多個執行緒間共享的,需要防止執行緒死鎖情況的發生。