inc++在多线程的情况下是非线程安全的 ,多条线程进行工作时,由于速度过快上个线程还未把值更新到主内存,下一个线程就已更新,所以会造成值缺少,出现写覆盖,运行出来的值会小于10000数据是不完整的,所以volatile不能保证原子性
要想解决上述问题,保证JMM的原子性,有两种解决办法:
第一:在increase方法上加锁,sychronized关键字
第二:用下面的AtomicInteger类的自增方法,代替number++方法,
volatile的不保证原子性理解
最新推荐文章于 2021-08-18 16:15:22 发布