1 死鎖(deadlock)線程
概念: 多個線程互相等待多方釋放資源而一直沒有執行進程
通常來講,要出現死鎖問題須要知足如下條件:資源
1. 互斥條件:一個資源每次只能被一個線程使用。it
2. 請求與保持條件:一個進程因請求資源而阻塞時,對已得到的資源保持不放。io
3. 不剝奪條件:進程已得到的資源,在未使用完以前,不能強行剝奪。循環
4. 循環等待條件:若干進程之間造成一種頭尾相接的循環等待資源關係。請求
只要破壞死鎖 4 個必要條件之一中的任何一個,死鎖問題就能被解決。阻塞
2 活鎖(livelock): 多個線程都釋放資源給別的線程使用,致使沒有線程拿到資源而正常執行
3 優先級反轉(priority inversion) :一個或多個線程由於種種緣由沒法獲取所得的須要資源,致使一直沒法執行。致使的緣由每每是當前線程優先級不高致使沒有資源,或某線程一直佔着關鍵資源不放