1. 程式人生 > >掛起和阻塞區別?sleep()和wait()的區別?

掛起和阻塞區別?sleep()和wait()的區別?

掛起和阻塞區別:
(1)掛起是一種主動行為,因此恢復也應該要主動完成。而阻塞是一種被動行為,是在等待事件或者資源任務的表現,你不知道它什麼時候被阻塞,也不清楚它什麼時候會恢復阻塞。
(2)阻塞(pend)就是任務釋放CPU,其他任務可以執行,一般在等待某種資源或者訊號量的時候出現。掛起(suspend)不釋放CPU,如果任務優先順序高,就永遠輪不到其他任務執行。一般掛起用於程式除錯中的條件中斷,當出現某個條件的情況下掛起,然後進行單步除錯。

sleep()和wait()函式的區別:
(1)兩者比較的共同之處是:兩個方法都是使程式等待多少毫秒。
(2)最主要區別是:sleep()方法沒有釋放鎖。而wait()方法釋放了鎖,使得其他執行緒可以使用同步控制塊或者方法。
(3)sleep()指執行緒被呼叫時,佔著CPU不工作,形象的說明為“佔著CPU”睡覺。
sleep(2000)表示:佔用CPU,程式休眠2秒。
wait(2000)表示:不佔用CPU,程式等待2秒。