樂觀鎖一定就是好的嗎?
樂觀鎖認(rèn)為對(duì)一個(gè)對(duì)象的操作不會(huì)引發(fā)沖突,所以每次操作都不進(jìn)行加鎖,只是在最后提交更改時(shí)驗(yàn)證是否發(fā)生沖突,如果沖突則再試一遍,直至成功為止,這個(gè)嘗試的過程稱為自旋。
樂觀鎖沒有加鎖,但樂觀鎖引入了ABA問題,此時(shí)一般采用版本號(hào)進(jìn)行控制;
也可能產(chǎn)生自旋次數(shù)過多問題,此時(shí)并不能提高效率,反而不如直接加鎖的效率高;
只能保證一個(gè)對(duì)象的原子性,可以封裝成對(duì)象,再進(jìn)行CAS操作;