阅读时间: 5分钟
在计算机中的Atomic是指不能分割成若干部分的意思。
如果一段程式码被认为是Atomic,则表示这段程式码在执行过程中,是不能被中断的。
在Java中,Atomic是Package - java.util.concurrent.atomic的工具包。
它的作用可以保证当执行绪(Thread)进入method执行指令时不会被其他执行绪(Thread)影响。
所有在Package - java.util.concurrent.atomic之下的class都会有atomic作为名字的开首。
以下是一些atomic的Class:
atomic class运用了lock and wait-free algorithms (Nonblocking algorithms)和
CPU中的"比较并交换"-英文是CAS(Compare and Swap)来实现它的目的。
那就是当Thread 1正在使用method,其他thread存取时就会被即时拒绝,而不会让它们继续等候。
因为大家可以想一想假如有成千上万个Thread尝试存取同一个method,
但它们存取不到反而留下来一直守候。这会造成严重阻塞。
另外,也确保资料操作的原子性。例如对i++、i--等 不是原子操作的动作
(因为当中涉及多个步骤包括第一步,读取i;第二步,加1或减1;第三步:写回记忆体),
在atomic class中就有解决的方法来应对。
参考文章/网站/书本:
Definition - What does Atomic mean?
Package java.util.concurrent.atomic Description