原子操作与原子性辨析
原子操作一定具备原子性,是线程安全的。具有原子性的函数或者方法并发一个原子操作不一定具备线程安全性。
-
原子操作:原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch 线程切换。它是线程安全的。
-
原子性:事务具有原子性,在一个函数上面加上@Transactional
注解表示该函数为事务方法,其中的操作要么全部执行成功或者全部不执行。如果一个所谓的“原子性函数”内部的实现并非真正的原子操作,或者存在其他可能导致线程不安全的因素(如共享了非原子操作的全局变量等),那么它就不是线程安全的。