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

Java原子类的模块化增量

柳飞飙
2023-03-14
问题内容

我很惊讶Java的AtomicInteger和AtomicLong类没有用于模块化增量的方法(因此,达到极限后,该值会回零。)

我认为我必须丢失一些显而易见的东西。最好的方法是什么?

例如,我想在线程之间共享一个简单的int,并且我希望每个线程都能够递增它,例如mod 10。

我可以创建一个使用同步/锁的类,但是有没有更好,更简单的方法?


问题答案:

synchronized向您的addModular()方法添加修饰符或块有什么困难?

这些Atomic类之所以没有此功能,是因为它们基于当前CPU提供的特定原子硬件指令,并且那些模块算法不能在不诉诸于锁或其他更复杂且可能效率低下的算法(例如一种)的情况下实现。马特建议。



 类似资料:
  • 新增一个类 net.wendal.nutzbook.module.CaptchaModule package net.wendal.nutzbook.module; import java.awt.image.BufferedImage; import javax.servlet.http.HttpSession; import net.wendal.nutzbook.util.Toolkit;

  • 7.2.5 类与模块化 我们在第 4 章讨论过模块化编程的思想。对于复杂程序,通常需要用分解的方法将程序 划分成若干模块,使每个模块仅针对有限的数据执行有限的操作。模块化能够使复杂程序的 设计更加可控。 对复杂程序一般有两种分解方法:功能分解和数据分解。功能分解是面向过程编程的基 础,依赖于子程序(如函数)概念,以过程为中心来建立功能模块;数据分解则是面向对象 编程的基础,依赖于类的概念,以数据为

  • 问题内容: 如果长变量声明为:- 私有易失性长计数器= 0; 现在,如果我使用预增量运算符对其进行增量,那么该操作将是原子的吗? 如果是,那么它将比对象的增量效率更高吗? 问题答案: 关键字只能解决可见性问题。您必须使用或方法/块来实现原子性(并发编程中的原子性)。 今天又发表了一篇文章:演示何时需要挥发物

  • 问题内容: 给这篇Dobbs博士文章,尤其是Builder模式,我们如何处理将Builder子类化的情况?以该示例的简化版本为例,在该示例中我们想使用子类来添加GMO标签,一个简单的实现将是: 子类: 现在,我们可以编写如下代码: 但是,如果我们弄错了订单,那么一切都会失败: 问题当然是NutritionFacts.Builder返回a NutritionFacts.Builder,而不是a GM

  • 主要内容:1 atomic的概述,2 原子更新单个变量,2.1 基本原子类,2.2 带版本号的原子类,3 原子更新数组,3.1 重要属性,3.2 重要方法,4 原子更新字段属性,5 原子类的加强,6 atomic的总结基于JDK1.8详细介绍了JUC下面的atomic子包中的大部分原子类的底层源码实现,比如AtomicInteger、AtomicIntegerArray、AtomicStampedReference等原子类源码。最后还介绍了JDK1.8对原子类的增强,比如LongAdder和Lo