当前位置: 首页 > 面试题库 >

Java线程中的volatile int是安全的吗?

杜凯
2023-03-14
问题内容

intJava线程安全性易变吗?也就是说,可以安全地读取和写入它而无需锁定吗?


问题答案:

是的,您可以从中读取并安全地对其进行写入-但您不能做任何复合操作,例如安全地对其进行递增,因为这是一个读/修改/写周期。还有一个问题是它如何与 其他
变量的访问交互。

坦率地说,volatile的确切性质令人困惑(有关更多详细信息,请参见JLS的内存模型部分)-我
个人
通常会使用它AtomicInteger作为确保正确使用的更简单方法。



 类似资料:
  • 我找到了关于线程安全的代码,但它没有来自给出示例的人的任何解释。我想知道为什么如果我不在“count”之前设置“synchronized”变量,那么count值将是非原子的(总是=200是期望的结果)。谢谢

  • 问题内容: 我知道文档说明该对象是线程安全的,但这是否意味着从所有方法对其进行的所有访问都是线程安全的?因此,如果我一次从多个线程中调用它,并且一次在同一实例上调用它,会不会发生什么不好的事情? 问题答案: 快速答案是肯定的,它们是线程安全的。但是不要让它在那里… 首先,一个小的内部管理是一个接口,任何不是线程安全的实现都将破坏书面合同。您包括的链接是指,它具有一定的灵巧性。 您包含的链接引起了一

  • 本文向大家介绍如何理解Java中的StringBuffer是线程安全的而StringBuilder是非线程安全的?,包括了如何理解Java中的StringBuffer是线程安全的而StringBuilder是非线程安全的?的使用技巧和注意事项,需要的朋友参考一下 StringBuffer(线程安全) StringBuffer是线程安全的,这意味着它们具有同步方法来控制访问,因此一次只有一个线程可以

  • 问题内容: 我发现以下Java代码。 其中,和是。 我知道基本类型的基本操作是线程安全的,但是我不确定。如果上述是必要的,是否可能有更好的类来处理这种操作? 问题答案: 否。该操作不是线程安全的。对于涉及分配给共享字段或数组元素的任何表达式,它要求锁定和/或适当的“先于”关系链是线程安全的。 (在字段声明为的情况下,“先发生”关系存在…但是仅在读和写操作上存在。该操作由一个读和一个写操作组成。它们

  • 如果这个家伙不是线程安全的,是否有类似的东西(可能来自Apache,...)? 谢了。

  • 我看到了不同的PHP二进制文件,比如非线程或线程安全? 这是什么意思? 这些软件包之间有什么区别?