了解JAVA的原子性和可见性这个博客主要解决两个问题:
1 .原子性与可见性的差异(1)原子性拒绝多线程操作,无论是多核还是单核,都只有一个线程具有原子量并同时对其进行操作。 简而言之,在操作中不被线程调度器中断的操作可以被认为是原子的。 例如a=1是原子操作,但a和a=1不是原子操作。
)可见性volatile修饰语可以修改相同的变量以适应多线程并发访问,从而导致相互不可见的意外结果。
2.synchronized如何保证原子性synchronized进行操作或内存锁定,具有互斥性。 如果线程操作由synchronized限定的内存或操作,则在执行后续操作之前必须获得锁。 但是,在同一时刻只能有一个线程获取同一锁(对象监视器),因此只能操作一个线程
更具体地说,可以看到本文https://blog.csdn.net/wohaqiyi/article/details/67635010