你好,原子性的根本在于多个操作之间不会有其他操作进来。我们在写一个方法时很容易遇到这样的:1、先从某处取出数据,并修改,2、然后将修改的更新回某处。单独看这一个方法是两部操作连续执行的,但实际未必如此,将这两个操作放在多线程环境下,很容易出现多个线程同时完成第一步操作,然后都去进行第二部,这时如果不做处理,每个线程都认为自己是对的,只关心用自己的结果去更新就会有问题,这就需要借助cas等来保证原子性来更新,这样才不会有线程安全问题。
这里并发的线程越多,需要做更新时出现非原子性更新的概率就会越大,这时借助cas更新时竞争就会变得更激烈,这就代表着cas执行时循环的次数会更多。