问题标签 [atomicinteger]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
348 浏览

multithreading - 将 AtomicInteger 与 JMH 多线程一起使用?

我正在使用 JMH 来测试我的项目的一些功能。当我尝试将 @GroupThreads 与 AtomicInteger 一起使用时,我无法重置 AtomicInteger,它只会随着时间的推移而增加。我还尝试使用 if else 检查和重置 AtomicInteger 但不能。你能给我一些关于我的问题的建议吗?非常感谢。

0 投票
1 回答
666 浏览

java - 包含 AtomicInteger 的类的对象无法使用 GSON 转换为 JSON

我正在尝试序列化一个类对象(比如说 MyClass)

这是 MyClass.java 的大致样子:

我正在尝试使用 GSON 将上述类的对象转换为 JSON

这是代码:

但它会引发以下异常:

我不确定如何处理这个问题,因为 SO 和其他论坛上的大多数答案都要求制作变量 TRANSIENT,而这基本上不是我想要实现的想法。

0 投票
4 回答
2619 浏览

java - 多线程中的 AtomicInteger

我想找出从 0 到 1000000 的所有素数。为此,我编写了这个愚蠢的方法:

这对我有好处,不需要任何编辑。比我写了以下代码:

请注意 (1) 和 (2) 标记的行。启用 (1) 时,程序运行速度快,但启用 (2) 时,运行速度较慢。

输出显示延迟较大的小部分

和线程获得相同的number价值:

请解释一下为什么选项 (2) 更慢以及为什么尽管 AtomicInteger 多线程安全,线程的数字值相等?

0 投票
1 回答
265 浏览

java - 如何在 Java 中获取与 uint32_t 对应的唯一值?

我必须在 Java 中生成一个唯一编号(对于我运行代码的机器),以便在 C++ 中它可以对应于uint32_t. 一般来说,其他 C++ 程序应该能够正确地读取这个唯一的数字作为uint32_t. 我在一个字节数组中发送这个信息,其他 C++ 程序正在反序列化它以获得这个数字。到目前为止,我无法在 C++ 程序中更改此数字的数据类型。

所以我想出了上面的代码。在应用程序启动(初始化阶段)期间,我的setClientId方法只会被调用一次:

  • 如果这台机器是第一次运行代码,就像它是一台新机器,那么我将传递0setClientId方法。
  • 如果这台机器已经在运行代码但我们重新启动了服务器,那么我将在数据库中查找这台机器最后保存的值是什么(因为我们也每隔几分钟将这个值保存在 db 中),然后我将传递它方法的价值setClientId

然后稍后当我的程序运行时(在初始化之后),它将继续调用getClientId方法来给我实际的唯一 clientId。

这是为我的机器生成uint32_t用于 C++ 程序的唯一 ID 的正确方法吗?我还确保如果值达到Integer.MAX_VALUE然后将其设置为 0 并重新开始。我必须这样做吗?或者我也可以为此取负值uint32_t

基本上,我想为我的机器生成一个唯一编号,该编号应始终对应于uint32_t. 如果机器是新机器,我们可以从数字 0 开始(bcoz 当我们在数据库中查找这台机器的值时,不会有任何值,所以我们将从 0 开始)但是如果机器之前已经运行过这段代码,然后从数据库中最后保存的值开始。

0 投票
2 回答
401 浏览

java - While 内部的原子函数

有人可以向我解释一下这段代码吗?

我的意思是为什么我不能只更改此代码

? 我知道永远不会出现编译错误语句但是为什么

没有得到错误?是不是总是假的太对了?

或者为什么我不能清除那个while循环并返回“oldValue+1”?

谢谢并恭祝安康。

0 投票
4 回答
1511 浏览

java - 如果对 int 变量的写入和读取是原子的,为什么需要 AtomicInteger?

我在Oracle 文档中读到:

  • 对于引用变量和大多数 原始变量(除了 long 和 double 之外的所有类型),读取和写入都是原子的。

(我猜这个特性已经被添加到一些新的 JDK 版本中,因为我曾经认为所有原始变量的读/写都不是原子的)

这是否意味着AtomicInteger已弃用且不应在新项目中使用?

0 投票
1 回答
1877 浏览

java - 多线程和 AtomicInteger

我从关于原子的教程中获取了这段代码,它说:-

“通过使用 AtomicInteger 作为 Integer 的替代品,我们能够在线程安全的庄园中同时增加数字,而无需同步对变量的访问。方法 incrementAndGet() 是一个原子操作,因此我们可以安全地从多个线程。”

它说这将返回正确的结果,1000 但是没有一个实例达到 1000,它们通常要少得多,例如

怎么了 ?

0 投票
0 回答
594 浏览

java - 为什么 Java 8 提供 LongAccumulator 而不是 IntAccumulator?

目前,我的程序大量使用AtomicIntegers 来跟踪并行报告的 int 的运行最大值。

在阅读了 Java 8 的 new 之后LongAccumulator,我曾希望使用IntAccumulatorwithmax作为累加器函数,以便以更少的线程争用来完成我想要的行为。然而它似乎并不存在。

是否有某种原因IntAccumulator没有意义?IntAdder对我来说,可能存在不必要的低级指令似乎是合理的,但一个IntAccumulator可能代表的行为比低级指令可以捕获的行为更多。

(如果它完全相关,我打算从 Scala 代码中使用这些)

0 投票
4 回答
7628 浏览

java - Atomic Integer incrementAndGet() 线程安全吗?

Atomic Integer incrementAndGet() 方法线程安全吗?我没有看到任何使用 synchronized 关键字。我正在使用以下代码生成唯一 ID:

我想知道调用该方法以生成唯一 ID 的多个线程是否会导致任何问题。

谢谢!

0 投票
2 回答
2436 浏览

java - Java 6 上的 AtomicInteger getAndUpdate 为零

我正在尝试使用计数器来检测通过 HTTP 方法发送的文本中唯一单词的数量。由于我需要确保此计数器值的并发性,我已将其更改为AtomicInteger.

在某些情况下,我想获取计数器的当前值并将其重置为零。如果我理解正确的话,我一定不能像这样单独使用get()andset(0)方法,而是使用 getAndUpdate() 方法,但是!我不知道如何为此重置实现 IntUnaryOperator,甚至不知道是否可以在 Java 6 服务器上执行此操作。

谢谢你。