flowchart TD
A[写操作 eg. add] --> B{获取独占锁};
B --> C[锁定成功];
C --> D[复制原数组<br>创建新数组副本];
D --> E[在新数组上进行修改];
E --> F[将原数组引用指向新数组];
F --> G[释放锁];
H[读操作 eg. get] --> I[直接访问当前数组引用];
I --> J[返回数据];
F -.->|通过 volatile 变量<br>保证对读操作立即可见| I;
