码迷,mamicode.com
首页 > 编程语言 > 详细

java的原子性操作有哪些

时间:2017-01-04 19:07:55      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:并发   cin   线程   哪些   切换   情况   原子性   读取   long   

Java中的原子操作包括:
1)除long和double之外的基本类型的赋值操作
2)所有引用reference的赋值操作
3)java.concurrent.Atomic.* 包中所有类的一切操作
count++不是原子操作,是3个原子操作组合
1.读取主存中的count值,赋值给一个局部成员变量tmp
2.tmp+1
3.将tmp赋值给count
可能会出现线程1运行到第2步的时候,tmp值为1;这时CPU调度切换到线程2执行完毕,count值为1;切换到线程1,继续执行第3步,count被赋值为1------------结果就是两个线程执行完毕,count的值只加了1;
还有一点要注意,如果使用AtomicInteger.set(AtomicInteger.get() + 1),会和上述情况一样有并发问题,要使用AtomicInteger.getAndIncrement()才可以避免并发问题

java的原子性操作有哪些

标签:并发   cin   线程   哪些   切换   情况   原子性   读取   long   

原文地址:http://www.cnblogs.com/yzjT-mac/p/6249686.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!