1、利用版本标识来确定读到的数据与提交时的数据是否一致。提交后修改版本标识,不一致时可以采取丢弃和再次尝试的策略。
2、java中的Compare and Swap即CAS ,当多个线程尝试利用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,而其它线程都失败,失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次尝试。
CAS 操纵中包含三个操纵数 —— 需要读写的内存位置(V)、进行比较的预期原值(A)和拟写入的新值(B)。假如内存位置V的值与预期原值A相匹配,那么处置惩罚器会自动将该位置值更新为新值B。否则处置惩罚器不做任何操纵。
CAS缺点: