synchronized volatile

synchronized 是独占锁/排他锁(就是有你没我的意思),同时只能有一个线程调用 add10KCount 方法,其他调用线程会被阻塞。所以三行 CPU 指令都是同一个线程执行完之后别的线程才能继续执行,这就是通常说说的 原子性 (线程执行多条指令不被中断)

 volatile 是非阻塞算法(也就是不排他),当遇到三行 CPU 指令自然就不能保证别的线程不插足了,这就是通常所说的,volatile 能保证内存可见性,但是不能保证原子性

如果写入变量值不依赖变量当前值,那么就可以用 volatile

参考:https://mp.weixin.qq.com/s/33cj-EBo9oBMlGBOaah8Qg

原文地址:https://www.cnblogs.com/xr210/p/13438571.html