ASD*_*ASD 6 java
我有点困惑......
从long和double除了long和double之外的几个线程读取\写入是真的,并且只需要使用volatile和long和double吗?
Lou*_*man 8
这听起来像是指JLS的这一部分.保证所有原始类型 - 除了double和long- 所有线程都会看到一些实际写入该变量的值.(使用double和long,前四个字节可能已由一个线程写入,最后四个字节可能由另一个线程写入,如JLS的该部分所述.)但它们不一定会同时看到相同的值,除非变量已标记volatile.
double
long
volatile
即使使用volatile,x += 3也不是原子的,因为它x = x + 3执行读取和写入,并且可能x在读取和写入之间进行写入.这就是我们拥有AtomicInteger和其他公用事业一样的原因java.util.concurrent.
x += 3
x = x + 3
x
AtomicInteger
java.util.concurrent
归档时间:
14 年,1 月 前
查看次数:
294 次
最近记录: