java自增的线程安全问题

一、自增会带来线程安全问题吗?为什么?

会!

1.i++在字节码层面分为三步:保存当前值,执行添加操作,更新新值

2.多线程操作时,可能会同时获取到旧值(假设为1),添加操作后为2,第一个线程刷新新值为3,第二个刷新还是3。

二、volatile可以保证线程安全吗?

不可以!

volatile只能保证可见性,以及顺序性

但是不能保证多个线程同时操作

三、如何保证线程安全?

synchronized,将方法原子化

automicInteger.getAndSwap

参考文章:https://www.cnblogs.com/zhengbin/p/5653051.html

发布了159 篇原创文章 · 获赞 41 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_37768971/article/details/102558435