gpt4 book ai didi

java - 这个函数是原子函数吗?

转载 作者:行者123 更新时间:2023-12-01 18:16:42 26 4
gpt4 key购买 nike

我有一个用例,我需要向底层数据结构添加值并且需要维护顺序。我使用 ConcurrentLinkedQueue 作为底层数据结构。下面是函数

public void put(V value) {
concurrentLinkedQueue.add(value);
}

这个语句是否是原子的,从某种意义上说,如果两个线程都试图输入值,线程 A 首先(值 V1),线程 B 其次(值 V2),是否有可能先添加 V2,然后添加 V1。

最佳答案

答案是你的问题有点毫无意义。

如果两个线程以不同步的方式调用 put,那么它们之间没有明显的差异

Thread 1     Thread 2

put
add
put
add

Thread 1    Thread 2

put
put
add
add

即使您使方法同步,您的程序中也会出现数据争用,除非您在两个操作之间引入正确的happens-before关系。

问问自己为什么线程调用put的顺序很重要,并确保通过正确的同步捕获此意图。

关于java - 这个函数是原子函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29094851/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com