一、概述
原子操作是对一个单一的对象(包括类域、数组元素等永久对象)数据进行修改过程中发生断电、严重异常等失败情况时,保证原始数据的完整性,即恢复到初始数据状态。事务操作是对一系列的永久数据更新的一个逻辑的集合,要么所有的永久数据的修改都正确完成,要么所有的数据都被恢复为它们以前的值。
二、原子操作
原子操作定义了一个单一的对象、类域、数组元素等进行修改的过程中发生断电或异常等失败情况之后,如何处理永久数据的内容。如果在修改的过程中发生断电,当电源恢复时,该原子操作失败的永久对象数据会恢复到最初的值。
例如: 通过原子写array_buf数组元素。数组的原始数据为: array_buf = [6, 7, 8, 9]。外部通过原子准备将数组更新为:[1, 2, 3, 4]。当更新了两个数组原素: [1, 2]时发生断电,此时,原子操作要求下次上电后需恢复到最初值,即: array_buf = [6, 7, 8, 9]。 |
原子操作的API:
如:Util. arrayCopy(byte[] src, short srcOff, byte[] dest, short destOff, short length)。该方法保证要么所有的字节都被复制了