在計算機中的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中就有解決的方法來應對。
參考文章/網站/書本: