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

长变量的原子增量?

杜河
2023-03-14
问题内容

如果长变量声明为:-

私有易失性长计数器= 0;

现在,如果我使用预增量运算符对其进行增量,那么该操作将是原子的吗?

如果是,那么它将比java.util.concurrent.atomic.AtomicLong对象的增量效率更高吗?


问题答案:

volatile关键字只能解决可见性问题。您必须使用AtomicLongsynchronized方法/块来实现原子性(并发编程中的原子性)。

今天又发表了一篇文章:演示何时需要挥发物



 类似资料:
  • 问题内容: 我很惊讶Java的AtomicInteger和AtomicLong类没有用于模块化增量的方法(因此,达到极限后,该值会回零。) 我认为我必须丢失一些显而易见的东西。最好的方法是什么? 例如,我想在线程之间共享一个简单的int,并且我希望每个线程都能够递增它,例如mod 10。 我可以创建一个使用同步/锁的类,但是有没有更好,更简单的方法? 问题答案: 向您的方法添加修饰符或块有什么困难

  • 问题内容: 我正在尝试以原子方式在Django中增加一个简单的计数器。我的代码如下所示: 如果我正确理解Django,则应将函数包装在事务中并使增量成为原子。但这不起作用,并且计数器更新中存在竞争条件。如何使此代码成为线程安全的? 问题答案: Django 1.1的新功能 或使用F表达式: 请记住指定要更新的字段,否则您可能在模型的其他可能字段上遇到竞争条件!

  • 我们在 ELB(负载均衡器)后面部署了同一应用程序的多个实例。每当完成某个工作时,我们都会计算一些元素,然后想要增加计数器的值。 我们使用ElastiCache将这些指标保存在内存中。我们已将其设置为Redis实例集群。 我很难理解如何与ElastiCache正确交互,这样计数器就不会错过任何增量(即原子操作)。我知道似乎是可行的方法,但我不知道如何设置Spring Data,以便我可以向我的

  • 问题内容: 在Objective-C中,您可以区分原子性质和非原子性质: 根据我的理解,您可以安全地从多个线程读取和写入定义为原子的属性,而同时从多个线程中写入和访问非原子属性或ivars可能导致不确定的行为,包括严重的访问错误。 因此,如果您在Swift中有这样的变量: 我可以安全地并行读写该变量吗?(不考虑这样做的实际含义)。 问题答案: 假设尚无底层文档,这还为时尚早,但是您可以从汇编中学习

  • 问题内容: 如果我有两个线程同时修改结构上的字符串字段,我是否总是会看到分配给该字段的一个或另一个字符串,但没有别的? 问题答案: 否。如果您需要原子操作,则存在。 在转到内存模型将所有相关的细节。在“内存模型”文档的顶部: 修改由多个goroutine同时访问的数据的程序必须序列化此类访问。 要序列化访问,请使用通道操作或其他同步原语(例如和 软件包中的原语)保护数据。

  • 问题内容: 假设我使用处理程序来处理间隔计时器。 我可以不用担心在设置(例如,Python VM正在执行字节码来设置变量)的情况下,信号处理程序中的分配会中断某些情况吗?(即 亚稳态 ) 更新 :我对在处理程序外部进行“复合赋值”的情况特别感兴趣。 (也许我想的太“低级”了,这一切都在Python中得到了解决……来自嵌入式系统的背景,我时常有这种冲动) 问题答案: 对简单变量的简单分配是“原子的”