如果两个线程都使用 i ++ 递增相同的int i,则可能会出现问题,因为 i ++ 不是原子操作。这就是为什么存在AtomicInteger.increment(),它使原子递增的原因。因此,如果我们有1个核心和2个线程在执行.increment(),那么绝对不会有问题(因为它不能在操作过程中被挂起)。但是,如果我们有2个内核和2个线程,并且它们并行地(完全同时)调用那个increment()怎么办?它们是否可能加载相同的int i值?这意味着如果int i是 1 ,则最终结果将是 2 而不是 3 。在那种情况下…

2020年3月27日 0条评论 33点热度 阅读全文

我必须在Java中为运行代码的机器生成一个唯一的数字,以便在C++中它可以与uint32_t对应。通常,其他C++程序应该能够正确读取此唯一数字作为uint32_t。我在字节数组中发送此信息,其他C++程序正在将其反序列化以获取此数字。到目前为止,我无法在C++程序中更改此数字的数据类型。 private static final AtomicInteger clientId = new AtomicInteger(0); // will be called many time when the program i…

2019年12月5日 0条评论 55点热度 阅读全文

我输入的int[]具有以下内容: [5, 65, 22, 1, 58, 5, 69, 12, 1, 22, 22, 58, 12, 54, 89] 使用 Map<Object, AtomicInteger>,我将其转换为以下对象: {1=2, 65=1, 5=2, 69=1, 22=3, 58=2, 12=1} 换句话说,我正在计算动态数组的重复元素。 现在,我需要找出最大和最小出现次数,而我确实陷入了进一步的步骤。 重复元素类的代码如下: public Map<Object, AtomicInt…

2019年10月6日 0条评论 29点热度 阅读全文