引用計數
當對象剛被創建的時候引用對象就是1,每次調用就+1,每調用一次release()方法就-1。當引用計數變爲0之後它就不能被訪問了。
返回引用對象的值
引用數值+1
引用數值-1
查看它的子類實現AbstractReferenceCountedByteBuf
我們可以看到retain0()+1的具體實現
對於retain0(我們必須要考慮併發問題,保證其原子性
很典型的CAS操作 ,相比較後設值;
這種方式也稱之爲自旋鎖。當賦值失敗時候繼續循環,直至賦值成功。
也就是說自旋鎖自己佔用着cpu直到更新操作完成爲止。