首页 新闻 会员 周边

java中int类型的线程安全,violate和AtomicInteger的疑问。

0
[已解决问题] 解决于 2013-03-26 23:48

在java中,高并发/多线程情况下,int的自增自减操作都不是线程安全的。

 

如果不使用synchronized关键字,怎样才能保证int的线程安全?

 

volatile int number;    // 1

AtomicInteger number;    // 2

volatile AtomicInteger number;   ​// 3 有必要这么声明吗?

 

以上3种,哪种是线程安全的?

问题补充:

那么AtomicInteger类型是否需要用volatile关键字修饰,2是不是线程安全的?

许仙儿的主页 许仙儿 | 初学一级 | 园豆:198
提问于:2013-03-09 23:53
< >
分享
最佳答案
1

可以参见http://haininghacker-foxmail-com.iteye.com/blog/1401346

看了你的问题才对此进行了了解的,AtomicInteger 内部貌似就是通过voilate实现的,voilate保证了多线程间操作的值永远是最新的,具体见给你的文章吧,或者网上看看其他相关文章。

 

补充:明显AtomicInteger的自增操作时线程安全的啦。如果你还有其他用处或操作,那么是否线程安全就要具体情况了啊。

奖励园豆:5
yevon | 菜鸟二级 |园豆:306 | 2013-03-10 09:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册