问题标签 [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.
java - ExecutorService 和 AtomicInteger : RejectedExecutionException
我希望 atomicInteger 的值为 100 然后程序终止
我有错误
我应该如何实现它。
java - 为什么不推荐基于 AtomicInteger 的 Stream 解决方案?
假设我有这份水果清单:-
我需要在每个水果前面加上一个序列号并打印出来。水果的顺序或序列号无关紧要。所以这是一个有效的输出: -
解决方案#1
解决方案#2
问题
为什么解决方案 #1 是一种不好的做法?我在很多地方都看到AtomicInteger
基于解决方案不好(比如在这个答案中),特别是在并行流处理中(这就是我在上面使用并行流来尝试遇到问题的原因)。
我查看了这些问题/答案:-
在哪些情况下流操作应该是有状态的?
使用 AtomicInteger 在 Stream 中进行索引是否合法?
Java 8:计算 lambda 迭代的首选方法?
他们只是提到(除非我错过了什么)“可能会出现意想不到的结果”。像什么?在这个例子中会发生吗?如果没有,你能给我一个可能发生的例子吗?
至于“不保证应用映射器函数的顺序”,嗯,这是并行处理的本质,所以我接受它,而且,在这个特定的例子中,顺序并不重要。
AtomicInteger
是线程安全的,因此在并行处理中应该不是问题。
有人可以提供示例,在哪些情况下使用这种基于状态的解决方案会出现问题?
java - Atomic 中的 Java 计算
我有一个关于 Java 的小问题AtomicInteger
。我知道我可以实现线程安全的计数器。但我找不到任何关于复杂计算的信息AtomicInteger
。
例如,我有这个计算(i 和 j 是对象变量,“this”):
是否可以仅使用 使此方法成为线程安全的AtomicInteger
?
这是有效的吗?
我认为不是因为线程可以在计算时更改 j。为避免这种情况,我必须控制计算时是否更改 j。但我没有在AtomicInteger
.
伪代码:
有人可以帮我澄清一下吗?
java - Threads with shared integer object not working as expected
I have a problem where i have to print the numbers in such format.
I have implemented my runnable interface as below.
My main class is as follows
when i run the program i am getting the output as follows
Instead of previously expected results. But when I Change the integer to atomic integer type i start getting the expected result. can anyone explain what is i can do to make it run with integer instead of using atomic integer
c++ - C++:在不同线程之间共享值(数据)的正确方法
我有以下 Thread.cpp:
运动线程.cpp
这不是我的确切代码,这是我将获取数据并将数据存储到变量中的部分。distance_q2, angle_q6_checkbit
等不是原子变量,因此从不同的线程读取和写入它们是不一致的!在同一个线程中,如果我尝试打印数据,我会得到正确的读数。输出如下。
现在,我试图将数据用于处理或其他我的东西。存储距离、角度质量数据等Thread::sync_quality, Thread::angle_q6_checkbit, Thread::distance
从激光数据中获取数据Thread.cpp
到motion.cpp
线程(运动线程中的 cout 数据):
我得到了不正确的输出(只有 359 度,这也是不正确的)。我无法得出结论。现在上面的输出是:
我试图将 then 声明为原子,但我看不到任何改进。帮助将不胜感激。
java - 当我们想要使用 map.get(key).wait() 时,当值是 AtomicLong 时同步 map.get(key) 真的有意义吗?
我要做的是实现一个特定于密钥的读写锁。如果该键上没有写入请求,则可以同时执行多个读取请求。可以同时执行对不同键的请求。我使用 ConcurrentHashMap 来保存键并记录每个键的运行写入操作。
我的代码如下所示:
这个想法是,当一个新线程想要读取时,它需要首先检查该键上是否有任何写入(如果计数不为 0),如果没有,它可以继续,如果是,它需要等待。所以我想我必须使用count.get(key).wait();
. 但是,Java 强迫我synchronized (count.get(key))
使用该wait()
方法。
我想知道在这里使用同步是否有意义,因为我已经使用了 AtomicInteger?
ps 我确实有notify()
后来的解锁方法。
c - 初始化 atomic_flag
我有一个struct
,我们称之为它struct foo
,我想添加一个atomic_flag
变量。到目前为止,我一直在calloc
考虑结构,因为它主要需要零初始化。我应该如何初始化atomic_flag
成员?
编辑:
我发现Jens Gustedt的这个相关DR#421建议将零/默认初始化设置为仅适用于s。我怎样才能知道它是否被接受?atomic_flag
multithreading - 为什么即使使用 AtomicInteger 来跟踪进度,这段代码也不是线程安全的?
我尝试创建一个扩展线程的类,它只需要一个字符串数组并交替打印前 2 个字符串以进行 10000 次迭代。我使用 AtomicInteger(计数器)跟踪要打印的索引,但是输出有时会打印:hello hello hello w hello hello 等,而不是在每次迭代时交替。为什么会这样?如果不将“同步”放在运行方法中,我该如何解决?
java - 线程是否等到它可以编辑(例如 addAndGet)一个原子变量?
我有两个线程和一个原子整数。两者都运行 1000 次迭代的循环。一个线程递增一,其他线程递减一。结果最后是 0。
到目前为止很好。
但是 a) 一个线程是否在因为 CAS 失败而无法编辑变量时等待下一条语句,或者 b= 每个线程是否有第二个后台线程(创建隐式)来编辑变量并等待它可以编辑变量?
第二个假设(b)没有意义,因为我得到了一个返回值,但我最好问一下。