- 活性(liveness):併發程序及時執行程序的能力稱爲活性,包括死鎖、飢餓、活鎖。
- 死鎖:
a對象要取得b對象的鎖,此時b對象也要取得a對象的鎖,陷入死鎖。
3.飢餓:假設一個對象的某個同步方法會佔用很長時間,若有個線程經常調用這個方法,那麼其他線程就不能正常獲取這個對象的鎖,得到正常的同步訪問,這稱之爲飢餓。
4.活鎖:陷入活鎖的線程們不是阻塞的,但它們會陷入互相阻礙,類似於兩個人面對面讓路的情形,a向他自己的左側移動,b向他自己的右側移動,結果兩人還是面對面阻礙。。。。。
a對象要取得b對象的鎖,此時b對象也要取得a對象的鎖,陷入死鎖。
3.飢餓:假設一個對象的某個同步方法會佔用很長時間,若有個線程經常調用這個方法,那麼其他線程就不能正常獲取這個對象的鎖,得到正常的同步訪問,這稱之爲飢餓。
4.活鎖:陷入活鎖的線程們不是阻塞的,但它們會陷入互相阻礙,類似於兩個人面對面讓路的情形,a向他自己的左側移動,b向他自己的右側移動,結果兩人還是面對面阻礙。。。。。