volatile只能作用于變量,保證了操作可見性和有序性,不保證原子性。
在Java的內存模型中分為主內存和工作內存,Java內存模型規定所有的變量存儲在主內存中,每條線程都有自己的工作內存。
主內存和工作內存之間的交互分為8個原子操作:
- lock - unlock - read - load - assign - use - store - write - volatile修飾的變量,只有對volatile進行assign操作,才可以load,只有load才可以use,這樣就保證了在工作內存操作volatile變量,都會同步到主內存中。