两个主题。 数组中第一个疯狂读取元素。 第二个同样是通过读取元素并将它们递增任意数量而更新元素。
这样安全吗?在这种情况下会出现什么问题吗?我不介意读取线程在更新线程仍在更新过程中读取“旧”值。我只是想确保读者不会读取未写入的数字,也不会发生异常。
答案 0 :(得分:9)
int
更新在所有可以执行托管代码的cpu架构上都是原子的。换句话说,您将不会读取只有写入线程修改的单个字节的值。大于32位的值类型值,如long
和double
不保证是原子的。对象引用也总是原子的。
答案 1 :(得分:1)
这不是线程安全的 - 您不能保证一个线程获得正确的数据。